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