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