BOSS 直聘的那种 im 聊天的是怎么实现的呢

2022-08-15 14:42:45 +08:00
 shilianmlxg

小程序开发 im,简单聊天发图片,或者些定制小功能,比如一些互动,

想问下大佬,这种聊天需求,有什么好用的方案或者轮子。

还有就是只做微信小程序 用原生写好还是 uniapp 呢再或者是 taro 呢

6177 次点击
所在节点    程序员
28 条回复
lambdaq
2022-08-15 15:15:22 +08:00
livechat 国内很成熟的市场了。
Vegetable
2022-08-15 15:19:15 +08:00
Jekins
2022-08-15 15:24:23 +08:00
随便找个 io 不就好了吗?我们公司用 t-io..
dongtingyue
2022-08-15 15:28:46 +08:00
之前弄了个,源码在 github 上
http://demo.heybutterfly.com/kefuroom/demo.html
JDog
2022-08-15 15:42:09 +08:00
无意中发现 t-io ,可这项目看个文档还得注册登录
wangsilence
2022-08-15 16:26:28 +08:00
后端和小程序我都可以做,价格公道,童叟无欺
AreYou0k
2022-08-15 16:35:48 +08:00
腾讯的原生好一点, 公司项目 uni-app, 我用腾讯的 IM 里那个 uniapp 示例功能缺失, bug 一大堆.
LeegoYih
2022-08-15 16:46:19 +08:00
不需要保存聊天记录的话,直接 websocket + protobuf 就可以了。

如果要保存聊天记录那就复杂了,需要一定的开发成本,推荐使用商业的 IM 解决方案。

如果项目内容比较敏感,需要自己开发一套系统,可以参考这个:
把服务拆成 Chat API 和 Chat Server:
- Chat API:负责 CRUD ,无状态,可以动态扩容,主要性能瓶颈在于数据库。
- Chat Server:负责保持长连接,推送消息,通过注册中心相互发现,或使用 Peer to Peer 方式相互注册和推送消息。
- DB:推荐 MongoDB 之类的 NoSQL

理论上,Chat Server 只需要 2 个实例就可以保证高可用和十万级连接数,只需要传消息 ID ,所以报文很小,使用 protobuf 通常只有 20 - 50 Bytes

ChevalierLxc
2022-08-15 16:51:48 +08:00
@LeegoYih 10 万这么高吗?我之前做了,4C8G 貌似只能 8000 个连接
zhuangzhuang1988
2022-08-15 17:23:04 +08:00
还记得 老罗的子弹短信 直接用的网易云信
shilianmlxg
2022-08-15 17:32:15 +08:00
@AreYou0k 这个东西叫即时通信 IM ,远离它你就远离了不幸。
shilianmlxg
2022-08-15 17:34:54 +08:00
@LeegoYih 谢谢大佬。这去学习下。

需要保存聊天记录。也确实内容很敏感,谢谢大佬。那这个 chat Api 加 chat server ,开发的难度之于前端 还是之于后端呢
xiangxiangxiang
2022-08-15 18:02:48 +08:00
@LeegoYih 感谢大佬分享,想请问下还有没有更多的技术细节文档啊?学习一下
wdwwtzy
2022-08-15 18:06:43 +08:00
很多第三方的吧 集成一下就行
yikyo
2022-08-15 18:14:05 +08:00
网易的支持还可以,但是 api 不统一,用起来感受不好
LeegoYih
2022-08-15 19:54:40 +08:00
@shilianmlxg
@xiangxiangxiang

复杂度具体要看你们业务需要实现的细节,一般来说前端可能会稍微复杂点,比如:消息重发、消息撤回、消息已读、客户端拉取离线未读消息、客户端过滤重复消息等。后端主要考虑集群高可用、消息 ID 生成算法、消息持久化。

具体的思路就是保持每个服务的实现简单,尽量不引入中间件增加复杂度,Chat API 只负责 CRUD ,Chat Server 只负责消息推送,保证这两个服务可以单独使用互不影响。


因为是给集团设计的,所以不太方便直接拿出来给大家看,现在手头上也没有现成的设计方案,可以弄个语雀文档,把我加进去,我有空把各个功能的细节写一下,大家一起设计。
night98
2022-08-15 20:05:34 +08:00
github 上好像有开源的方案
Windelight
2022-08-15 20:29:12 +08:00
以前调研过开源项目野火 Firechat ,在 GitHub 开源,还有青岛易软的喧喧,支持私有部署但是闭源软件。不过我们认为最好的还是网易云信
samzong
2022-08-15 22:28:40 +08:00
cskefu 春松客服了解下
awalkingman
2022-08-15 22:58:49 +08:00
@LeegoYih 按这个图,发一条消息客户端要和服务端通信两次啊,感觉这个逻辑不是很主流

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

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

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

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

© 2021 V2EX