摘要:服務(wù)器和客戶端可以在給定的時間范圍內(nèi)的任意時刻,相互推送信息。指定連接成功后的回調(diào)函數(shù)用于向服務(wù)器發(fā)送數(shù)據(jù)或者指定收到服務(wù)器數(shù)據(jù)后的回調(diào)函數(shù)指定連接關(guān)閉后的回調(diào)函數(shù)指定報錯時的回調(diào)函數(shù)關(guān)閉
1、websocket 是什么?
解決客戶端與服務(wù)端實時通信而產(chǎn)生的技術(shù)。
先通過HTTP/HTTPS協(xié)議進行握手后創(chuàng)建一個用于交換數(shù)據(jù)的TCP連接,然后服務(wù)端與客戶端通過此TCP連接進行實時通信。
服務(wù)器和客戶端可以在給定的時間范圍內(nèi)的任意時刻,相互推送信息。
以前我們實現(xiàn)推送技術(shù),用的都是輪詢,在特定時間間隔由瀏覽器自動發(fā)出請求,主動拉取服務(wù)器消息。需要不斷的向服務(wù)器發(fā)送請求,會占用大量的帶寬和服務(wù)器資源。
2、使用websocket
在支持WebSocket的瀏覽器中,在創(chuàng)建socket之后??梢酝ㄟ^onopen,onmessage,onclose、onerror四個事件實現(xiàn)對socket進行響應(yīng)
只讀屬性 readyState 表示連接狀態(tài),可以是以下值: 0 - 表示連接尚未建立。 1 - 表示連接已建立,可以進行通信。 2 - 表示連接正在進行關(guān)閉。 3 - 表示連接已經(jīng)關(guān)閉或者連接不能打開。 // window.WebSocket "WebSocket" in window 檢測瀏覽器是否支持 WebSocket var ws = new WebSocket(“ws://localhost:8080”); // 申請一個WebSocket對象,參數(shù)是需要連接的服務(wù)器端的地址 // 同http協(xié)議使用http://開頭一樣,WebSocket協(xié)議的URL使用ws://開頭 // 另外安全的WebSocket協(xié)議使用wss://開頭。 // 指定連接成功后的回調(diào)函數(shù) ws.onopen = function() { console.log(“open”); ws.send(“hello”); // 用于向服務(wù)器發(fā)送數(shù)據(jù) }; // 或者 ws.addEventListener("open", function (event) { ws.send("Hello Server!"); }); // 指定收到服務(wù)器數(shù)據(jù)后的回調(diào)函數(shù) ws.onmessage = function(evt) { console.log(evt.data) }; // 指定連接關(guān)閉后的回調(diào)函數(shù) ws.onclose = function(evt) { console.log(“WebSocketClosed!”); }; // 指定報錯時的回調(diào)函數(shù) ws.onerror = function(evt) { console.log(“WebSocketError!”); }; // 關(guān)閉websocket websocket.close();
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/103307.html
摘要:概述本文是系列的第一篇,主要介紹相關(guān)的基礎(chǔ)協(xié)議知識和??蛻舳耸盏巾憫?yīng)后,立即發(fā)起下一次的請求。收到消息通過事件來接收消息。類型則需要傳遞一個對象作為參數(shù),相關(guān)的內(nèi)容也將在本系列第二篇中進行介紹。 概述 本文是WebSocket系列的第一篇,主要介紹WebSocket相關(guān)的基礎(chǔ)協(xié)議知識和API。由于WebSocket的相關(guān)介紹在MDN中分布較亂,初學(xué)者不太容易入門,因此通過本文將相關(guān)基礎(chǔ)...
摘要:服務(wù)端確認協(xié)議版本,升級為協(xié)議。自己寫了一個例子,服務(wù)端在開始連接后,利用定時器主動向客戶端發(fā)送隨機數(shù),客戶端也可以發(fā)給服務(wù)器消息,然后服務(wù)器返回這條消息給客戶端。 寫在前面 webSocket是一項可以讓服務(wù)器將數(shù)據(jù)主動推送給客戶端的技術(shù)。前幾天寫了一個日志功能,日志數(shù)據(jù)需要實時更新。正好項目中有封裝好的WebSocket組件,且接口支持webSocket,就用它實現(xiàn)了。也是第一次用...
摘要:服務(wù)端確認協(xié)議版本,升級為協(xié)議。自己寫了一個例子,服務(wù)端在開始連接后,利用定時器主動向客戶端發(fā)送隨機數(shù),客戶端也可以發(fā)給服務(wù)器消息,然后服務(wù)器返回這條消息給客戶端。做的事情就是給頁面的元素綁定事件。 寫在前面webSocket是一項可以讓服務(wù)器將數(shù)據(jù)主動推送給客戶端的技術(shù)。前幾天寫了一個日志功能,日志數(shù)據(jù)需要實時更新。正好項目中有封裝好的WebSocket組件,且接口支持webSock...
摘要:概述本文為協(xié)議的第十一章,本文翻譯的主要內(nèi)容為的相關(guān)注意事項。應(yīng)用協(xié)議使用這個協(xié)議規(guī)范互操作性注意事項使用時需要使用或者更高版本的協(xié)議。安全性注意事項見安全性注意事項一節(jié)。 概述 本文為 WebSocket 協(xié)議的第十一章,本文翻譯的主要內(nèi)容為 WebSocket 的 IANA 相關(guān)注意事項。 IANA 注意事項(協(xié)議正文) 11.1 注冊新 URI 協(xié)議 11.1.1 注冊 ws 協(xié)...
摘要:上一篇文章第二章實戰(zhàn)演練開發(fā)網(wǎng)站第九節(jié)防止跨站攻擊下一篇文章第三章概念及應(yīng)用第二節(jié)服務(wù)端編程的異步特性使得其非常適合服務(wù)器的高并發(fā)處理,客戶端與服務(wù)器的持久連接應(yīng)用框架就是高并發(fā)的典型應(yīng)用。因為是的標準協(xié)議,所以不受企業(yè)防火墻的攔截。 上一篇文章:Python:Tornado 第二章:實戰(zhàn)演練:開發(fā)Tornado網(wǎng)站:第九節(jié):防止跨站攻擊下一篇文章:Python:Tornado 第三章...
閱讀 3445·2021-09-26 09:46
閱讀 2792·2021-09-13 10:23
閱讀 3533·2021-09-07 10:24
閱讀 2400·2019-08-29 13:20
閱讀 2927·2019-08-28 17:57
閱讀 3080·2019-08-26 13:27
閱讀 1187·2019-08-26 12:09
閱讀 514·2019-08-26 10:27