如何自己实现一个聊天系统,覆盖(Web,Android,iOS)

发布于 2022-08-28 00:55:22 字数 237 浏览 20 评论 0

一直对实时聊天这块内容迷糊。XMPP 好复杂的说。
对于一个超低配服务端,我想用 Go 压榨性能,利用好“协程”、队列的形式降低一点实时性(即收发消息有少许延迟)保证资源的低消耗,配合 Python 跑一些业务逻辑,调用一下 Push(极光)的推送保证离线消息的接收。
但是,还是搞不清楚应该如何去做,也不明白其中涉及哪些知识点。
另外,如何设计存储聊天信息的 Redis 数据库存储格式呢?
诸位,不吝赐教。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(12

逆蝶 2022-09-04 00:55:22

之前我给上家互联网公司负责Android客户端聊天底层的实现,之前参与过聊天协议的设计,围观了下服务器的架构,上线以来没有用户报过丢消息,dau大概大几十万(具体数字忘了)

聊天这块确实比较难做,关键在于不知道你想要什么样的聊天系统。比如对系统可靠性的要求有多高,就我所知,xmpp是不保证可靠性的。所以你碰到的第一个问题就是协议,不同协议的特征和特点都不一样。
相比来说服务端的性能真的不是特别重要,毕竟能把协议正确实现了就很费劲了,而且还要给后面的开发留余地,方便拓展(这块儿还是属于协议的事情)。
至于客户端的实现,也不轻松,数据库,长连接,ui展示。一处弄不好就有一堆用户抱怨费电费流量,UI卡什么的都是小事情。
还有,做聊天的,假如让用户丢几条消息,用户真的就不想再用了,消息可靠性真的很重要。
客户端的网络条件还没说呢,wap网络的兼容性是硬伤,socket下的协议完全用不了的。。。
微信确实很牛逼。。。

千仐 2022-09-04 00:55:22

推荐pomelo

一萌ing 2022-09-04 00:55:22

同推荐Pomelo,lz我也有相同的想法,想闲了实现一下试试看。
楼上几位说的不错,我再来贴一个教程:Tutorial----分布式聊天服务器
=======添加=======
嗯其实我做过XMPP,很复杂,很繁重,尤其是对于移动端的聊天室而言,流量是个问题。另外,其实用Erlang来做消息也不错,据说米聊后端核心就是这个做的。

鲸落 2022-09-04 00:55:22
栖竹 2022-09-04 00:55:22

https://github.com/xiaowudesign/nowboard 这有一个,是通过微博登入,实现在线信息交流的。只是给楼主提供一个思路。

巷子口的你 2022-09-04 00:55:22

Web可以用socket.io(话说是node.js,go不会的说),具体有教程的 用socket.io和express搭建聊天室

带上头具痛哭 2022-09-04 00:55:22

基于xmpp的, 服务端有开源的openfire , tigase 等。

web 端可以使用jsjac, strophe 等。

青芜 2022-09-04 00:55:22

我们刚刚用socket.io实现了一个,缓存使用的是redis

一世旳自豪 2022-09-04 00:55:22

写过类似的, http://itorr.sinaapp.com/comet/ 只要能实现收发消息,及时返回新消息就行,于是配合php+长连接就可以做到了。
//待附源码

十级心震 2022-09-04 00:55:22

很多应用都用xmpp,貌似

醉生梦死 2022-09-04 00:55:22

IM的话主要还是协议的设计,可以参考QQ的协议实现

薄凉少年不暖心 2022-09-04 00:55:22

这方面还是socket.io是王道

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文