即时通讯现在一般都使用的什么技术?

2015-09-08 09:41:06 +08:00
 machinemxy

简短交代下背景。最近我们公司正如火如荼进行着新技术学习动员会。一名同事被分到了研究即时通讯的实现。她花了几个星期研究了 mqtt 协议,但是发现这个协议似乎是适用于群发而并非点对点的。我以前在校学习 Java 时,似乎老师讲述过一个使用 socket 实现点对点即时聊天的方法。但是时间也已经比较久远了,不知现在在 web 上,以及 app 内部那些涉及即时通讯的模块,都是用什么技术实现的?

6016 次点击
所在节点    Coding
12 条回复
huijiewei
2015-09-08 09:48:41 +08:00
以前用 XMPP ,最近听说出了一个更好的,但是不记得名字了
squid157
2015-09-08 09:52:14 +08:00
@huijiewei xmpp 也是中心化的 点对点不理解
squid157
2015-09-08 09:54:05 +08:00
mqtt 做消息队列

web 的话,必须依靠服务器我感觉,并不能点对点,你不妨看看 WebSocket 和 WebRTC ,我并不清楚具体内容
YuJianrong
2015-09-08 09:57:34 +08:00
为什么现在还要寻求点对点方案?中心中转压力并不大吧?点对点就要面对都在代理 /路由后面所以无法直接建立连接的问题。
machinemxy
2015-09-08 10:03:41 +08:00
@YuJianrong 唔,其实我也并不了解。只是想大致知道,个人对个人收发信息,大致会需要用到什么技术,然后给同事研究提供一个参考方向。
machinemxy
2015-09-08 10:04:19 +08:00
@squid157 谢谢。
ibremn
2015-09-08 10:10:27 +08:00
点对点?那只适用于传文件吧。。

Web 上一般用 WebSocket ,移动端过去 XMPP 用得比较多,目前 WebSocket 和 MQTT 更多一些。
大厂一般会用私有的二进制协议而非开源的文本协议。
caoyue
2015-09-08 11:33:33 +08:00
你说的点对点是指消息不经过服务器?但是建立连接还是得通过服务器交换信息

Whisper TextSecure 是这种的,主打隐私和安全性,代码 Github 上有开源
machinemxy
2015-09-08 12:54:57 +08:00
@caoyue 唔,我表述有误。其实经过服务器也可以。只要能够做到两个人互相交流。
yyfearth
2015-09-08 13:55:44 +08:00
@squid157 WebRTC 应该是 p2p 的 只需要服务器做一下发现和管理
WebSocket 比较合适做中心化的即时通讯 而且浏览器的支持也已经不错了 而且 fallback 用 Comet ( long pulling )加上支持 event driven 和异步处理 的服务器端 效果就不错了
heighgun
2015-09-08 15:46:54 +08:00
XMPP 很少用了吧资源浪费实在太高,现在一般都是私有协议,参照 RFC 标准来写。
lenran
2015-09-08 23:39:22 +08:00
个人觉得依赖服务器的协议和 p2p 的协议各有千秋。
不过长远来看,我认为 p2p 的通讯协议有更广更深的发展空间

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

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

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

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

© 2021 V2EX