HTML5 WebSockets学习
2019獨角獸企業重金招聘Python工程師標準>>>
輪詢、長輪詢及流三種提供實時數據解決方案,都會涉及到HTTP請求和相應報頭,其中包含大量額外的、不必要的報頭數據,會造成傳輸延遲。
????WebSocket,是Web應用程序的傳輸協議,類似于TCP,提供了雙向的、按序到達的數據流。作為Web的一部分,WebSocket連接的是URL,而非因特網上的主機和端口。
????WebSocket使用:
????????要連接遠程主機,只需要新建一個WebSocket實例,提供希望連接的對端URL。
????????ps:ws://和wss://前綴分別表示WebSocket連接和安全WebSocket連接
????????
????????基于同一底層TCP/IP連接,在客戶端和服務器端之間的初始握手階段,將HTTP協議升級至WebSocket協議,WebSocket連接就建立完成了。連接一旦建立完成,WebSocket數據幀就可以以全雙工的模式在客戶端和服務器間進行雙向傳送。
????????連接本身,是通過WebSocket接口定義的message事件和send函數來運作的。
時間監聽器:
????WebSocket編程遵循異步編程模式;
????打開Socket后,只需要等待事件發生,而不需要主動向服務器輪詢,所以需要在WebSocket對象中添加回調函數來監聽事件:
????四個事件:
????????open:Socket連接建立時被觸發
????????message:收到消息時被觸發
????????close:Socket連接關閉時被觸發
????????error:錯誤事件發生時會響應未料到的錯誤
????事件處理回調函數:
????????onopen: webSocket.onopen ?= function(e) {...}
????????onmessage: webSocket.onmessage = function(e) {...}
? ? ????onclose: webSocket.onclose = function(e) {...}
????????onerror: webSocket.onerror = function(e) {...}
????發送消息:
????????WebSocket處于打開狀態時,可以采用send()方法來發送消息;
????????????document.getElementById("sendBtn").onclick = function() {
????????????? ? webSocket.send(document.getElementById("inputMsg").value);
????????????}
轉載于:https://my.oschina.net/u/1251536/blog/404677
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的HTML5 WebSockets学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Node.JS监听文件夹变化
- 下一篇: github使用心得