WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。在WebSocket API中,浏览器和服务器只需要做一个握手的动作

浏览器通过 JavaScript 向服务器发出建立 WebSocket 连接的请求,连接建立以后,客户端和服务器端就可以通过 TCP 连接直接交换数据。

当你获取 Web Socket 连接后,你可以通过 send() 方法来向服务器发送数据,并通过 onmessage 事件来接收服务器返回的数据。

WebSocket 属性

属性 描述
Socket.readyState

只读属性 readyState 表示连接状态,可以是以下值:

  • 0 - 表示连接尚未建立。

  • 1 - 表示连接已建立,可以进行通信。

  • 2 - 表示连接正在进行关闭。

  • 3 - 表示连接已经关闭或者连接不能打开。

Socket.bufferedAmount

只读属性 bufferedAmount 已被 send() 放入正在队列中等待传输,但是还没有发出的 UTF-8 文本字节数。


WebSocket 事件

事件 事件处理程序 描述
open Socket.onopen 连接建立时触发
message Socket.onmessage 客户端接收服务端数据时触发
error Socket.onerror 通信发生错误时触发
close Socket.onclose 连接关闭时触发

WebSocket 方法

方法 描述
Socket.send()

使用连接发送数据

Socket.close()

关闭连接

安装 pywebsocket

在执行以上程序前,我们需要创建一个支持 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 演示

最新文章

  1. hdu 4859 海岸线 Bestcoder Round 1
  2. 关于一道数据库例题的解析。为什么σ age>22 (πS_ID,SCORE (SC) ) 选项是错的?
  3. Git 安装
  4. Putty SSH简单使用
  5. maven在windows环境下加载settings.xml文件
  6. maven依赖的全局排除
  7. C# 条形码 生成函数 (Code 128 标准
  8. HDU 1069 Monkey and Banana(DP 长方体堆放问题)
  9. Log4j配置文件位置+Spring数据源配置文件位置
  10. Luogu P1860 新魔法药水
  11. Hadoop 2.6.0-cdh5.4.0集群环境搭建和Apache-Hive、Sqoop的安装
  12. Python线性表——单链表
  13. mongodb配置文件解说(转载)
  14. python数据分析库pandas
  15. MUI音乐播放html5+audio模块
  16. spring ioc 理解
  17. 【备忘录】yii2高级模板多个应用启用同一个域名多个栏目
  18. JS连等赋值的坑
  19. SQL 批量插入有标识列的数据
  20. Codeforces Round #412 div2 ABCD

热门文章

  1. Linux查看外网IP
  2. 模拟C#的事件处理和属性语法糖
  3. PHP基于单例模式编写PDO类的方法
  4. Python3之hashlib模块
  5. 【转】CSS制作图形速查表-存档
  6. xdebug浏览器调试参数
  7. ACM学习历程—广东工业大学2016校赛决赛-网络赛D 二叉树的中序遍历(数据结构)
  8. nginx用cookie控制访问权限实现方法
  9. web攻击之六:DNS攻击原理与防范
  10. oracle--事物---