像QQ这样的聊天软件,客户端是主动请求信息,还是服务器推送?

itfanr 发布于 2013/08/19 16:52
阅读 2K+
收藏 0

情景是这样:

A用户和B用户聊天,服务器中转,AB两者都没有静态的公网IP。比如两部手机,用的3G网络。

A发送一个消息给B(当然是先发送到了服务器)。那么B是怎么得到这个信息的?B一直向服务器查询?貌似这个方法太占用资源了。那么服务器推送?具体是怎么实现的呢?有没有类似的开源案例呢?

谢谢啦~~~


加载中
0
赵勇奎
赵勇奎
QQ是通过UDP协议进行P2P通讯的,你可以在网上看一下UDP穿透相关的资料。
itfanr
itfanr
考虑两部手机 忽略PC的内网QQ这类情形
0
酒逍遥
酒逍遥
应该是服务器推的....开源的话 openfire 可以参考下
itfanr
itfanr
谢谢
0
木有Some
木有Some

服务器推送吧

那么大的用户群,客户端一直向服务器查询,什么服务器也受不了吧。

itfanr
itfanr
回复 @木有Some : 貌似应该采用第三方推送 自己架设好麻烦
木有Some
木有Some
回复 @itfanr : G了一下,貌似有个IMS体系跟这个有点相关,不是很懂,好复杂的样子。你可以去看看。
itfanr
itfanr
我知道啊 所以问的就是解决方案
0
klyou
klyou
 穿墙
0
IdleMan
IdleMan
手机难道不支持socket?
0
姑妄听之
姑妄听之
通过登录的功能服务器就可以得到B方的IP地址了。既可以转发A的消息给B,又可以只把B的地址给A,然后A直接传给B。
itfanr
itfanr
手机的IP是唯一的?
0
iiiiiiiii
iiiiiiiii
 client -> server -> client
0
乌龟壳
乌龟壳

引用来自“IdleMan”的答案

手机难道不支持socket?
一般用tcp即可全双工了,lz不用那么纠结吧。
乌龟壳
乌龟壳
tcp是全双工的,两端都能收发自由(相对自由)。要推要请求都可以实现。
itfanr
itfanr
求解释 全双工?没听说tcp全双工 手机QQ用到了?
0
jjinl
jjinl
看一下natp转化,局域网穿透,两个局域网ip,相互访问,需要公网ip介入,才能实现p2p对接
itfanr
itfanr
手机QQ就是这么实现的?
返回顶部
顶部