小半年前,和做IM的同事讨论web IM的ajax实现的时候曾经提起过这样一种做法:维持一个http长连接来等待后台的聊天数据,当聊天数据一到就立刻把数据发送进这个http连接里面并断开连接让xmlhttp开始解析,这样就可以做到客户端对数据的即时响应。这一就是“推模型”的ajax版本。
其实当时我们也怀疑meebo等web IM有可能已经采用了类似的技术,但是未经确认。由于考虑到IM部门有可能需要把这个技术申请专利加以保护,因此很长的一段时间里面不管是论坛上还是blog上我都没有提及过这个想法。
今天偶然在网上发现了一个叫做comet的技术(http://alex.dojotoolkit.org/?p=545),和我们的想法如出一辙,现在已经至少被应用在:
GMail’s GTalk integration
Jot Live
Renkoo
cgi:irc
Meebo
消息迟钝到如此地步,汗颜中。
奇怪的是,似乎comet技术不需要断开http连接,不知道是如何让xmlhttp控件开始解析数据的(如果不用xmlhttp技术的话,那不就成了传统的“推模型”了吗?)。