用 Go 打造现代 IM 之特征

2023-09-18 11:29:46 +08:00
 wkong

本人职业生涯十多年基本都在开发 IM ,踩过许多坑,重构了无数个版本 (好代码不是设计出来的,是重构出来的)。

我们开源的 IM ,目前我认为最具现代化的 IM:

  1. 万人或千万人群支持
  2. 同一账号多设备登录
  3. 消息不丢,换设备实时同步
  4. 消息可编辑可回复
  5. 消息可以点赞
  6. 已读未读
  7. 在线状态
  8. 端对端加密(仅国外)

(其实现代 IM ,不仅仅是 IM 了,更像一个实时的论坛)

开源地址:

唐僧叨叨 IM ,高颜值,仿 TG https://github.com/TangSengDaoDao/TangSengDaoDaoServer

悟空 IM ,唐僧叨叨的通讯底层(自研消息 DB ) https://github.com/WuKongIM/WuKongIM

4300 次点击
所在节点    程序员
45 条回复
bctdg
2023-09-18 13:49:12 +08:00
@fgwmlhdkkkw 毕竟 go 的数据库选择也有很多嘛,Pebble 、BadgerDB 也是 go 写的 kv 数据库,所以有点好奇怎么选的
hao7Chen
2023-09-18 13:50:16 +08:00
Go 语言这么厉害吗?看来我得学一学了
bctdg
2023-09-18 13:51:13 +08:00
@wkong 自研 LSM 太强啦!不选择已有的 LSM 存储(比如 Pebble )有啥考量不
i979491586
2023-09-18 13:53:54 +08:00
牛。先 star 。
wkong
2023-09-18 13:53:54 +08:00
@bctdg Pebble 这些不适合 IM 消息的这种特点,自研的类似 kafka 一样的 一个 topic 一个日志文件+索引文件,我们是一个频道一个日志文件+索引文件,一个频道的消息就可以按顺序写入到频道的日志文件里,性能非常高
bctdg
2023-09-18 14:06:26 +08:00
@wkong 哦~所以也不需要有 LSM 的 compaction 是吗?更像是个 append-only + 索引的日志?
wkong
2023-09-18 14:08:31 +08:00
@bctdg 是的
bctdg
2023-09-18 14:09:13 +08:00
@wkong 好的!感谢,已 star ,跟着大佬学习
MENGKE
2023-09-18 14:16:09 +08:00
被缅北之类的拿去用小心被定帮信啊
wkong
2023-09-18 14:18:49 +08:00
@MENGKE 没收钱也定帮信?
ArianX
2023-09-18 14:50:28 +08:00
和主流 IM 的对比如何,飞书也是用 go 打造的
matolv
2023-09-18 14:54:04 +08:00
这个 UI 和操作逻辑和微信接近,微信属于完全上位替代,从用户角度就没太大意义了,除非当作企业 OA 一部分使用。如果是其他场景,TG 和 element/matrix 属于差异性替代,有存在意义。
queuey
2023-09-18 15:41:48 +08:00
随便看了一下 iOS 的代码,这个 DB SQL 连防注入都没有?而且没有看到用户和用户关系表?当然有可能是我遗漏了
wkong
2023-09-18 15:51:13 +08:00
@queuey 都是通过?填充的参数应该不存在注入问题,用户和群我们都统一抽象为频道了,频道与频道之间可以 follow 的关系
winglight2016
2023-09-18 15:57:45 +08:00
好,这下老板再让我做个微信就有办法了。。。U•ェ•*U
aiqinxuancai
2023-09-18 15:59:57 +08:00
@wkong #13 这个主要看执法的灵活性
yaodao
2023-09-18 16:06:41 +08:00
大佬,佩服,点赞收藏了
tigerZhang
2023-09-18 16:56:28 +08:00
iOS 列表采用的是 tableView ? collectionView ?自定义 ?
hentaisan
2023-09-18 17:01:45 +08:00
现在没有专供局域网的 im 吗?
wkong
2023-09-18 17:07:36 +08:00
@tigerZhang tableView

@hentaisan 可以局域网部署,不需要连任何外网

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/974777

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX