简短交代下背景。最近我们公司正如火如荼进行着新技术学习动员会。一名同事被分到了研究即时通讯的实现。她花了几个星期研究了 mqtt 协议,但是发现这个协议似乎是适用于群发而并非点对点的。我以前在校学习 Java 时,似乎老师讲述过一个使用 socket 实现点对点即时聊天的方法。但是时间也已经比较久远了,不知现在在 web 上,以及 app 内部那些涉及即时通讯的模块,都是用什么技术实现的?
1
huijiewei 2015-09-08 09:48:41 +08:00
以前用 XMPP ,最近听说出了一个更好的,但是不记得名字了
|
3
squid157 2015-09-08 09:54:05 +08:00 via iPhone
mqtt 做消息队列
web 的话,必须依靠服务器我感觉,并不能点对点,你不妨看看 WebSocket 和 WebRTC ,我并不清楚具体内容 |
4
YuJianrong 2015-09-08 09:57:34 +08:00 via iPhone
为什么现在还要寻求点对点方案?中心中转压力并不大吧?点对点就要面对都在代理 /路由后面所以无法直接建立连接的问题。
|
5
machinemxy OP @YuJianrong 唔,其实我也并不了解。只是想大致知道,个人对个人收发信息,大致会需要用到什么技术,然后给同事研究提供一个参考方向。
|
6
machinemxy OP @squid157 谢谢。
|
7
ibremn 2015-09-08 10:10:27 +08:00
点对点?那只适用于传文件吧。。
Web 上一般用 WebSocket ,移动端过去 XMPP 用得比较多,目前 WebSocket 和 MQTT 更多一些。 大厂一般会用私有的二进制协议而非开源的文本协议。 |
8
caoyue 2015-09-08 11:33:33 +08:00
你说的点对点是指消息不经过服务器?但是建立连接还是得通过服务器交换信息
Whisper TextSecure 是这种的,主打隐私和安全性,代码 Github 上有开源 |
9
machinemxy OP @caoyue 唔,我表述有误。其实经过服务器也可以。只要能够做到两个人互相交流。
|
10
yyfearth 2015-09-08 13:55:44 +08:00
@squid157 WebRTC 应该是 p2p 的 只需要服务器做一下发现和管理
WebSocket 比较合适做中心化的即时通讯 而且浏览器的支持也已经不错了 而且 fallback 用 Comet ( long pulling )加上支持 event driven 和异步处理 的服务器端 效果就不错了 |
11
heighgun 2015-09-08 15:46:54 +08:00
XMPP 很少用了吧资源浪费实在太高,现在一般都是私有协议,参照 RFC 标准来写。
|
12
lenran 2015-09-08 23:39:22 +08:00
个人觉得依赖服务器的协议和 p2p 的协议各有千秋。
不过长远来看,我认为 p2p 的通讯协议有更广更深的发展空间 |