|
发表于 29-1-2008 03:26 PM
|
显示全部楼层
对传输协议的认识有限,我对XMPP的认识只是XML-Based的Messaging Protocol。GoogleTalk, iChat, Pidgin 还有最新的Android都可以看到它的影子。
看了你的帖子之后,我用了xmpp4r-simple (Ruby XMPP Client)和gmail试了一下(需要两个google account),发现和HTTP不同的是这个是一个stateful的protocol, client只需要bind到server service就可以了,不需要定时做request,也不需要listen to server。不过,根据wikipedia,XMPP也可以用HTTP来做transport ,可以bypass firewall。
XMPP的另一个好处就是Decentralization , 不同的XMPP server之间是可以进行沟通的,例如kugua@mydomain.com可以和page@gmail.com传输信息。 |
|
|
|
|
|
|
|

楼主 |
发表于 29-1-2008 11:51 PM
|
显示全部楼层
不论上面是 http还是 xmpp
底层的socket 应该 还是一样吧。。。我一时忘了。socket 本来就是bidirectional的。。
server side 那里有 一个主 thread 会有一个 listening loop,
server一旦 接受 到 client socket 就 spawn 一个 thread 来handle 那个socket,
主thread继续listening。。
我是曾想过尝试自己写一个 web server 来玩玩。。。
但还没彻底的去研究 http 。。
但我自己的了解是。。。
估计跟一般 的 socket 一样, 主thread 有个listening loop,
client 要request abc.html, 也会先 connect to server 然后
server 就去挖 abc.html 输送回给client。输送后就直接把connection close 掉了。。
下个 request 就是下一个connection 的事了。。
IM 的话平时是connected 的。 嗯。所以 server 有什么新东西可以直接告诉 client。。。因为
client 总是 connected。。。
可是如果 要跑到别的server 去沟通。。那么 server 就 变成 另某 server 的client ??
[ 本帖最后由 tensaix2j 于 29-1-2008 11:54 PM 编辑 ] |
|
|
|
|
|
|
| |
本周最热论坛帖子
|