1. 程式人生 > >B/S架構的實時通訊

B/S架構的實時通訊

        對於web的實時通訊,例如基於Browser(下簡稱B)的網路聊天程式,目前主要還是靠B端向Server(下簡稱S)端發起輪詢獲得最新資訊。webserver在設計的時候考慮到B端可能數量太大,所以沒有儲存與B端的連線資訊(如IP之類的)方便下次連線,所以B/S之間的資料互動,是由B端發起的。當然,HTML5定義了WebSocket協議(目前大多數瀏覽器已實現),能更好的節省伺服器資源和頻寬並達到實時通訊。
        輪詢,對於大多數請求是獲取不到後臺更新的資料,如果頻率太高則佔用頻寬,太低則無法及時顯示實時資料。大體的做法是:B端ajax請求超時時間設長點,讓其在S端沒有返回資料的情況下hold住connection;S端則查詢相關資料,如果有更新資料則立馬返回,否則不停地迴圈直到有更新資料或者達到預設定的閾值為止,在每次迴圈中可以適當sleep一段時間。