1. 程式人生 > >web聊天程式,ajax+伺服器推送技術

web聊天程式,ajax+伺服器推送技術

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

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

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

當有訊息傳送上來的時候我們就用resume(),把掛起的所有訊息執行緒喚醒(喚醒之前別忘了把訊息用printwriter寫進流)。

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

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

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