小半年前,和做IM的同事討論web IM的ajax實(shí)現(xiàn)的時(shí)候曾經(jīng)提起過(guò)這樣一種做法:維持一個(gè)http長(zhǎng)連接來(lái)等待后臺(tái)的聊天數(shù)據(jù),當(dāng)聊天數(shù)據(jù)一到就立刻把數(shù)據(jù)發(fā)送進(jìn)這個(gè)http連接里面并斷開(kāi)連接讓xmlhttp開(kāi)始解析,這樣就可以做到客戶(hù)端對(duì)數(shù)據(jù)的即時(shí)響應(yīng)。這一就是“推模型”的ajax版本。
其實(shí)當(dāng)時(shí)我們也懷疑meebo等web IM有可能已經(jīng)采用了類(lèi)似的技術(shù),但是未經(jīng)確認(rèn)。由于考慮到IM部門(mén)有可能需要把這個(gè)技術(shù)申請(qǐng)專(zhuān)利加以保護(hù),因此很長(zhǎng)的一段時(shí)間里面不管是論壇上還是blog上我都沒(méi)有提及過(guò)這個(gè)想法。
今天偶然在網(wǎng)上發(fā)現(xiàn)了一個(gè)叫做comet的技術(shù)(http://alex.dojotoolkit.org/?p=545),和我們的想法如出一轍,現(xiàn)在已經(jīng)至少被應(yīng)用在:
消息遲鈍到如此地步,汗顏中。
奇怪的是,似乎comet技術(shù)不需要斷開(kāi)http連接,不知道是如何讓xmlhttp控件開(kāi)始解析數(shù)據(jù)的(如果不用xmlhttp技術(shù)的話,那不就成了傳統(tǒng)的“推模型”了嗎?)。