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 演示