關(guān)于webSoket理解

webSoket 出現(xiàn)是因為普通的http請求,只是客戶端發(fā)送請求,然后服務(wù)器接收,想要獲取服務(wù)器端的消息只能通過Ajax請求,但h5之后出現(xiàn)的webSoket,打破了這一僵局~~~實現(xiàn)了客戶端和服務(wù)器端全雙工通信~

一,特點:建立連接之后一直保持連接狀態(tài)。

var Socket = new WebSocket(url, [protocol] );

二,屬性:

?Socket.readyState---只讀屬性?readyState?表示連接狀態(tài),可以是以下值:0 - 表示連接尚未建立。1 - 表示連接已建立,可以進(jìn)行通信。2 - 表示連接正在進(jìn)行關(guān)閉。3 - 表示連接已經(jīng)關(guān)閉或者連接不能打開。

Socket.bufferedAmount (buffererdAmount 緩沖掛載)只讀屬性?bufferedAmount?已被 send() 放入正在隊列中等待傳輸,但是還沒有發(fā)出的 UTF-8 文本字節(jié)數(shù)。

三,事件:

open---連接建立時觸發(fā)

message---客戶端接收服務(wù)端數(shù)據(jù)時觸發(fā)

onerror---通信發(fā)生錯誤時觸發(fā)

close---連接關(guān)閉時觸發(fā)

四,方法

Socket.send()使用連接發(fā)送數(shù)據(jù)

Socket.close()關(guān)閉連接

五,示例

// 初始化一個 WebSocket 對象

var ws = new WebSocket("ws://localhost:9998/echo");

// 建立 web socket 連接成功觸發(fā)事件

ws.onopen = function () {

? // 使用 send() 方法發(fā)送數(shù)據(jù)

? ws.send("發(fā)送數(shù)據(jù)");

? alert("數(shù)據(jù)發(fā)送中...");

};

// 接收服務(wù)端數(shù)據(jù)時觸發(fā)事件

ws.onmessage = function (evt) {

? var received_msg = evt.data;

? alert("數(shù)據(jù)已接收...");

};

// 斷開 web socket 連接成功觸發(fā)事件

ws.onclose = function () {

? alert("連接已關(guān)閉...");

};


最后問答:

HTTP 和 WebSocket 有什么關(guān)系?

Websocket 其實是一個新協(xié)議,跟 HTTP 協(xié)議基本沒有關(guān)系,只是為了兼容現(xiàn)有瀏覽器的握手規(guī)范而已,也就是說它是 HTTP 協(xié)議上的一種補(bǔ)充。

Html 和 HTTP 有什么關(guān)系?

Html 是超文本標(biāo)記語言,是一種用于創(chuàng)建網(wǎng)頁的標(biāo)準(zhǔn)標(biāo)記語言。它是一種技術(shù)標(biāo)準(zhǔn)。Html5 是它的最新版本。

Http 是一種網(wǎng)絡(luò)通信協(xié)議。其本身和 Html 沒有直接關(guān)系。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容