web聊天程序,ajax+服務器推送技術

web聊天技術一般用ajax請求服務器,方式有多種,比如定時幾秒請求一次,或長連接什麼的。我個人還是喜歡“服務器推”這種模式,它不用定幾秒請求一次讓服務器大大減壓。長連接什麼這個不懂什麼意思不管了(額,不知道”服務器推“屬於哪一種偷笑)。

"服務器推送",是指當有消息時就把消息從服務器分發下來。從字面上看這個HTTP協議好像不能實現,因爲HTTP是有請求才有響應的。即然這樣,那我們換個思路想一下,即要實現”服務器推“又要尊詢HTTP,那麼我們能不能把請求給掛起來呢,當然可以!

我們知道一個HTTP請求就是一個新線程,那麼我們就把所以獲取消息的請求的線程給suspend()起來,這裏爲什麼不用wait或sleep,用sleep是定時沉睡,所以不能智能化,至於wait這個東西必須要線程用到synchronized這個東西,否則會產生異常,不深研這個了(或許可以用wait,只是本人對線程不很熟所以不說這個了)。

當有消息發送上來的時候我們就用resume(),把掛起的所有消息線程喚醒(喚醒之前別忘了把消息用printwriter寫進流)。

這樣第一輪消息成功接收,當客戶端成功響應時我們在js回調方法裏產即再次調用ajax獲取消息請求。基本思路完成.

在這期間我們不需考慮很多細節問題比如,HTTP掛起超時或session失效什麼的。

不寫了有不懂的或感興趣的加 +qq 317822276

JSP的簡單例子http://download.csdn.net/detail/bichir/5088881,其他的如asp.net,原理一樣.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章