您好,登錄后才能下訂單哦!
好程序員web前端分享WebSocket協議,WebSocket協議簡介
2. 在WebSocket出現之前,傳統的服務端向瀏覽器推送消息的技術包括:ajax、flash、comet、java applet等。無一例外,這些技術使用的都是長輪循,即每隔一段時間去請求后臺,以獲取最新狀態。長輪詢方式容易實現,但效果也差,頻繁盲目的調用后臺,帶來不必要的開銷,且實時性無法保障,后臺出現更新,前端需要在下一次輪詢時才知道。
3. WebSocket協議支持服務端與瀏覽器建立長連接,雙方可以隨時發送數據給對方,不再是由客戶端控制的一問一答的方式。在實現推送功能的時候,主要是由服務端給客戶端發送數據。
4.以前的網站為了實現推送功能,使用的方法都是輪詢。所謂的輪詢就是在特定的時間間隔(例如1秒),由瀏覽器向服務器發出一個 Http request ,然后服務器返回最新的數據給客戶端瀏覽器,從而給出一種服務端實時推送的假象。由于 Http Request 的 Header(請求頭)很長,而傳輸的數據可能很短就只占一點點,每次請求消耗的帶寬大部分都消耗在 Header 上。從網上資料得知后來還有改進的輪詢方法叫做 Comet ,使用 Ajax 。但這種技術雖然可達到雙向通信。
二.WebSocket原理
基于長輪循(polling)和websocket推送的瀏覽器(browser)和服務端(Server)的交互對比圖如下所示:
Websocket對象還提供了幾個回調方法
//連接創建成功時被回調
myWebSocket.onopen = function(evt) { alert("Connection open ..."); };
//收到服務端的消息時被回調
myWebSocket.onmessage = function(evt) { alert( "Received Message: " + evt.data); };
//連接關閉時被回調
myWebSocket.onclose = function(evt) { alert("Connection closed."); };
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。