84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
一直对实时聊天这块内容迷糊。XMPP 好复杂的说。 对于一个超低配服务端,我想用 Go 压榨性能,利用好“协程”、队列的形式降低一点实时性(即收发消息有少许延迟)保证资源的低消耗,配合 Python 跑一些业务逻辑,调用一下 Push(极光)的推送保证离线消息的接收。 但是,还是搞不清楚应该如何去做,也不明白其中涉及哪些知识点。 另外,如何设计存储聊天信息的 Redis 数据库存储格式呢? 诸位,不吝赐教。
走同样的路,发现不同的人生
之前我给上家互联网公司负责Android客户端聊天底层的实现,之前参与过聊天协议的设计,围观了下服务器的架构,上线以来没有用户报过丢消息,dau大概大几十万(具体数字忘了)
聊天这块确实比较难做,关键在于不知道你想要什么样的聊天系统。比如对系统可靠性的要求有多高,就我所知,xmpp是不保证可靠性的。所以你碰到的第一个问题就是协议,不同协议的特征和特点都不一样。 相比来说服务端的性能真的不是特别重要,毕竟能把协议正确实现了就很费劲了,而且还要给后面的开发留余地,方便拓展(这块儿还是属于协议的事情)。 至于客户端的实现,也不轻松,数据库,长连接,ui展示。一处弄不好就有一堆用户抱怨费电费流量,UI卡什么的都是小事情。 还有,做聊天的,假如让用户丢几条消息,用户真的就不想再用了,消息可靠性真的很重要。 客户端的网络条件还没说呢,wap网络的兼容性是硬伤,socket下的协议完全用不了的。。。 微信确实很牛逼。。。
推荐pomelo
同推荐Pomelo,lz我也有相同的想法,想闲了实现一下试试看。 楼上几位说的不错,我再来贴一个教程:Tutorial----分布式聊天服务器 =======添加======= 嗯其实我做过XMPP,很复杂,很繁重,尤其是对于移动端的聊天室而言,流量是个问题。另外,其实用Erlang来做消息也不错,据说米聊后端核心就是这个做的。
Pomelo
参考 firebasehttps://www.firebase.com/
https://github.com/xiaowudesign/nowboard 这有一个,是通过微博登入,实现在线信息交流的。只是给楼主提供一个思路。
Web可以用socket.io(话说是node.js,go不会的说),具体有教程的 用socket.io和express搭建聊天室
基于xmpp的, 服务端有开源的openfire , tigase 等。
web 端可以使用jsjac, strophe 等。
我们刚刚用socket.io实现了一个,缓存使用的是redis
写过类似的, http://itorr.sinaapp.com/comet/ 只要能实现收发消息,及时返回新消息就行,于是配合php+长连接就可以做到了。 //待附源码
很多应用都用xmpp,貌似
之前我给上家互联网公司负责Android客户端聊天底层的实现,之前参与过聊天协议的设计,围观了下服务器的架构,上线以来没有用户报过丢消息,dau大概大几十万(具体数字忘了)
聊天这块确实比较难做,关键在于不知道你想要什么样的聊天系统。比如对系统可靠性的要求有多高,就我所知,xmpp是不保证可靠性的。所以你碰到的第一个问题就是协议,不同协议的特征和特点都不一样。
相比来说服务端的性能真的不是特别重要,毕竟能把协议正确实现了就很费劲了,而且还要给后面的开发留余地,方便拓展(这块儿还是属于协议的事情)。
至于客户端的实现,也不轻松,数据库,长连接,ui展示。一处弄不好就有一堆用户抱怨费电费流量,UI卡什么的都是小事情。
还有,做聊天的,假如让用户丢几条消息,用户真的就不想再用了,消息可靠性真的很重要。
客户端的网络条件还没说呢,wap网络的兼容性是硬伤,socket下的协议完全用不了的。。。
微信确实很牛逼。。。
推荐pomelo
同推荐
Pomelo
,lz我也有相同的想法,想闲了实现一下试试看。楼上几位说的不错,我再来贴一个教程:Tutorial----分布式聊天服务器
=======添加=======
嗯其实我做过XMPP,很复杂,很繁重,尤其是对于移动端的聊天室而言,流量是个问题。另外,其实用Erlang来做消息也不错,据说米聊后端核心就是这个做的。
参考 firebase
https://www.firebase.com/
https://github.com/xiaowudesign/nowboard 这有一个,是通过微博登入,实现在线信息交流的。只是给楼主提供一个思路。
Web可以用socket.io(话说是node.js,go不会的说),具体有教程的 用socket.io和express搭建聊天室
基于xmpp的, 服务端有开源的openfire , tigase 等。
web 端可以使用jsjac, strophe 等。
我们刚刚用socket.io实现了一个,缓存使用的是redis
写过类似的, http://itorr.sinaapp.com/comet/ 只要能实现收发消息,及时返回新消息就行,于是配合php+长连接就可以做到了。
//待附源码
很多应用都用xmpp,貌似