青草久久影院-青草久久伊人-青草久久久-青草久久精品亚洲综合专区-SM双性精跪趴灌憋尿调教H-SM脚奴调教丨踩踏贱奴

17站長網(wǎng)

17站長網(wǎng) 首頁 編程教程 Html5教程 查看內(nèi)容

HTML5 WebSocket

html5 WebSocket 提供了一種在單個 TCP 連接上進(jìn)行全雙工通訊的協(xié)議

html5 WebSocket API 的實(shí)現(xiàn)中,瀏覽器和服務(wù)器只需要做一個握手的動作,然后,瀏覽器和服務(wù)器之間就形成了一條快速通道,兩者之間就直接可以數(shù)據(jù)互相傳送

瀏覽器通過 JavaScript 向服務(wù)器發(fā)出建立 WebSocket 連接的請求,連接建立以后,客戶端和服務(wù)器端就可以通過 TCP 連接直接交換數(shù)據(jù)

當(dāng)獲取 Web Socket 連接后,可以通過 send() 方法來向服務(wù)器發(fā)送數(shù)據(jù),并通過 onmessage 事件來接收服務(wù)器返回的數(shù)據(jù)

下面的代碼創(chuàng)建了一個 WebSocket 對象

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

new WebSocket() 第一個參數(shù) url,指定連接的 URL

第二個參數(shù) protocol 是可選的,指定了可接受的子協(xié)議

HTML5 WebSocket 屬性

下表列出了 WebSocket 對象的屬性

其中:ws 是 WebSocket 的一個對象

屬性描述
ws.readyState只讀屬性 readyState 表示連接狀態(tài),可以是以下值
0 - 表示連接尚未建立
1 - 表示連接已建立,可以進(jìn)行通信
2 - 表示連接正在進(jìn)行關(guān)閉
3 - 表示連接已經(jīng)關(guān)閉或者連接不能打開
ws.bufferedamount只讀屬性 bufferedamount 表示已被 send() 放入正在隊(duì)列中等待傳輸,但是還沒有發(fā)出的 UTF-8 文本字節(jié)數(shù)


WebSocket 事件

下表列出了 WebSocket 對象的相關(guān)事件

其中: ws 是 WebSocket 的一個對象

事件事件處理程序描述
openws.onopen連接建立時觸發(fā)
messagews.onmessage客戶端接收服務(wù)端數(shù)據(jù)時觸發(fā)
errorws.onerror通信發(fā)生錯誤時觸發(fā)
closews.onclose連接關(guān)閉時觸發(fā)


WebSocket 方法

下表列出了 WebSocket 對象的相關(guān)方法

其中: ws 是 WebSocket 的一個對象

方法描述
Socket.send()使用連接發(fā)送數(shù)據(jù)
Socket.close()關(guān)閉連接


WebSocket 實(shí)例

WebSocket 協(xié)議本質(zhì)上是一個基于 TCP 的協(xié)議

為了建立一個 WebSocket 連接,客戶端瀏覽器首先要向服務(wù)器發(fā)起一個 HTTP 請求

這個請求和通常的 HTTP 請求不同,包含了一些附加頭信息,其中附加頭信息 "Upgrade: WebSocket" 表明這是一個申請協(xié)議升級的 HTTP 請求

服務(wù)器端解析這些附加的頭信息然后產(chǎn)生應(yīng)答信息返回給客戶端

客戶端和服務(wù)器端的 WebSocket 連接就建立起來了

雙方就可以通過這個連接通道自由的傳遞信息,并且這個連接會持續(xù)存在直到客戶端或者服務(wù)器端的某一方主動的關(guān)閉連接

客戶端的 HTML 和 JavaScript

目前大部分瀏覽器支持 HTML5 WebSocket() 接口

我們可以在以下瀏覽器中嘗試: Chrome,Mozilla,Opera 和 Safari

ws.html

<!DOCTYPE HTML>
<Meta charset="utf-8">
<script>
   function WebSockettest()
   {
      if ("WebSocket" in window)
      {
         alert("您的瀏覽器支持 WebSocket!");
 
         // 打開一個 web socket         var ws = new WebSocket("ws://localhost:9998/echo");
 
         ws.onopen = function()
         {
            // Web Socket 已連接上,使用 send() 方法發(fā)送數(shù)據(jù)
            ws.send("發(fā)送數(shù)據(jù)");
            alert("數(shù)據(jù)發(fā)送中...");
         };
 
         ws.onmessage = function (evt) 
         { 
            var received_msg = evt.data;
            alert("數(shù)據(jù)已接收...");
         };
 
         ws.onclose = function()
         { 
            // 關(guān)閉 websocket
            alert("連接已關(guān)閉..."); 
         };
      }
 
      else
      {
         // 瀏覽器不支持 WebSocket
         alert("您的瀏覽器不支持 WebSocket!");
      }
}
</script>
<div id="sse">
   <a href="javascript:WebSockettest()">運(yùn)行 WebSocket</a>
</div>

安裝 pywebsocket

在執(zhí)行以上程序前,我們需要創(chuàng)建一個支持 WebSocket 的服務(wù)

可從pywebsocket下載 mod_pywebsocket,或者使用 git 命令下載

git clone https://github.com/google/pywebsocket.git

mod_pywebsocket 需要 python 環(huán)境支持

mod_pywebsocket 是一個 Apache HTTP 的 Web Socket擴(kuò)展,安裝步驟如下:

解壓下載的文件

進(jìn)入 pywebsocket 目錄

執(zhí)行命令:

$ python setup.py build $ sudo python setup.py install

查看文檔說明

pydoc mod_pywebsocket

開啟服務(wù)

在 pywebsocket/mod_pywebsocket 目錄下執(zhí)行以下命令

$ sudo python standalone.py -p 9998 -w ../example/

以上命令會開啟一個端口號為 9998 的服務(wù),使用 -w 來設(shè)置處理程序 echo_wsh.py 所在的目錄。

現(xiàn)在我們可以在 Chrome 瀏覽器打開前面創(chuàng)建的 ws.html 文件

如果瀏覽器支持 WebSocket(),點(diǎn)擊"運(yùn)行 WebSocket"

返回頂部
主站蜘蛛池模板: 奇米精品一区二区三区在线观看 | 后入内射国产一区二区 | 人妻中文字幕无码系列 | 欧美另类摘花hd | 黑人巨摘花破女处 | 寂寞骚妇女被后入式抽插 | 麻豆免费观看高清完整视频在线 | 久久综合亚洲色hezyo | 国产伦子沙发午休系列资源曝光 | 国产精品日韩欧美一区二区三区 | 纲手裸乳被爆白浆 | 99视频在线看观免费 | 免费精品在线视频 | 中文字幕午夜福利片 | 99在线观看免费视频 | 第四色播日韩AV第一页 | 色偷偷爱偷偷要 | 国产精品久久免费视频 | 久久精品国产亚洲AV蜜臀 | 日本动漫henta videos | 三级网址在线播放 | 香蕉久久一区二区三区啪啪 | 处xxxx.88| 久久中文字幕亚洲 | 做暖暖视频在线看片免费 | 久久99精品AV99果冻 | 国产午夜精品久久理论片 | 亚洲这里只有精品 | 成人免费肉动漫无遮网站 | 奶头被客人吸得又红又肿 | 精品蜜臀AV在线天堂 | 嗯啊…嗯np男男双性总受 | 国产激情视频在线播放 | 广东95后小情侣酒店自拍流出 | 日韩欧美一区二区中文字幕 | 国产区精品综合在线 | 爱啪国产精品视频在线 | 色人阁久久 | 在线精品国精品国产不卡 | 暗卫受被肉到失禁各种PLAY | 国产精品久久久久无码AV色戒 |