WebSocket是HTML5開始提供的一種在單個 TCP 鏈接上進行全雙工通信的協議。在WebSocket API中,瀏覽器和服務器只須要作一個握手的動做html
瀏覽器經過 JavaScript 向服務器發出創建 WebSocket 鏈接的請求,鏈接創建之後,客戶端和服務器端就能夠經過 TCP 鏈接直接交換數據。python
當你獲取 Web Socket 鏈接後,你能夠經過 send() 方法來向服務器發送數據,並經過 onmessage 事件來接收服務器返回的數據。git
屬性 | 描述 |
---|---|
Socket.readyState | 只讀屬性 readyState 表示鏈接狀態,能夠是如下值:github
|
Socket.bufferedAmount | 只讀屬性 bufferedAmount 已被 send() 放入正在隊列中等待傳輸,可是尚未發出的 UTF-8 文本字節數。socket |
事件 | 事件處理程序 | 描述 |
---|---|---|
open | Socket.onopen | 鏈接創建時觸發 |
message | Socket.onmessage | 客戶端接收服務端數據時觸發 |
error | Socket.onerror | 通訊發生錯誤時觸發 |
close | Socket.onclose | 鏈接關閉時觸發 |
方法 | 描述 |
---|---|
Socket.send() | 使用鏈接發送數據ui |
Socket.close() | 關閉鏈接 |
在執行以上程序前,咱們須要建立一個支持 WebSocket 的服務。從 pywebsocket 下載 mod_pywebsocket ,或者使用 git 命令下載:
git clone https://github.com/google/pywebsocket.git
mod_pywebsocket 須要 python 環境支持
mod_pywebsocket 是一個 Apache HTTP 的 Web Socket擴展,安裝步驟以下:
解壓下載的文件。
進入 pywebsocket 目錄。
執行命令:
$ python setup.py build $ sudo python setup.py install
查看文檔說明:
$ pydoc mod_pywebsocket
在 pywebsocket/mod_pywebsocket 目錄下執行如下命令:
$ sudo python standalone.py -p 9998 -w ../example/
以上命令會開啓一個端口號爲 9998 的服務,使用 -w 來設置處理程序 echo_wsh.py 所在的目錄。
如今咱們能夠在 Chrome 瀏覽器打開前面建立的 runoob_websocket.html 文件。若是你的瀏覽器支持 WebSocket(), 點擊"運行 WebSocket",你就能夠看到整個流程各個步驟彈出的窗口,流程 Gif 演示