聊天软件在线状态更新原理

铂金小虫 发布于 2013/05/31 15:07
阅读 508
收藏 2

好奇问问,像qq这种聊天软件,当两个人聊天时,其实各自既是服务器端也是客户端,连接是建立在通信双方的(也就是不和中央服务器打交道)。

  但是如何更新好友的在线状态呢?这些在线状态应该是存在服务器里的吧,难道也是定时请求刷新的?

加载中
0
回去干活
回去干活

不需要点对点.直接server更新状态,用户全获取server状态就行了.

点对点就要上udp了,这货要比tcp复杂多.

铂金小虫
铂金小虫
tcp解析蛮烦,udp的话聊天其实丢包无所谓,重新发送就行,也不需要自己去实现丢包重发策略吧。
铂金小虫
铂金小虫
你的意思是消息要经过中央服务器?我之前看过面试例子说和某个人聊天其实只是从服务器获取对方ip,然后直接和他建立连接。但是我感觉如果是数据库保存这些状态的话,一个性能差,第二及时性差(程序崩溃可能不会更新数据库中的状态)。
0
伊藤熊吉
伊藤熊吉
QQ这种是经过中央服务器的,既然经过中央服务器,原理就呼之欲出了
0
Nesson
Nesson
我怎么觉得是跟服务器交互的
0
乖猫的老公
乖猫的老公

引用来自“bundles”的答案

不需要点对点.直接server更新状态,用户全获取server状态就行了.

点对点就要上udp了,这货要比tcp复杂多.

+1 肯定是在服务器更新,客户端直接刷一下就行了。另,QQ用的就是UDP协议。

0
独-奏
独-奏
html5里引入了webservice
0
假正经哥哥
假正经哥哥
好友状态是推送的
0
烟头
烟头

tcp/udp推送就行了吧

http是客户端定时请求的

返回顶部
顶部