Appearance
websocket
详细讲解 websocket 的使用
概述
websocket 是一个应用层协议, 实现了浏览器和服务端的长连接通讯。 基于此协议可以在 BS 架构中实现一些需要实时通讯的应用,例如聊天室,在线游戏等。
学习 websocket 主要分为三部分:
- websocket 协议学习,理解该协议基本定义
- 客户端学习,前端主要指浏览器环境如何利用
Websocket对象创建连接 - 服务端学习,如何搭建 websocket 服务
快速入门
采用 websocket echo 验证 websocket
浏览器中的 websocket 对象
HTML5 中定义了 WebSocket 宿主对象,实现基于 websocket 协议的客户端。
客户端实例
浏览器暴露了 WebSocket 对象创建 ws 客户端。采用 var ws = new WebSocket(url,protocols) 的方法实例化客户端。
url表示需连接的服务端地址protocols表示协议的配置
连接成功后,可采用 ws.send 方法向服务端发送消息。发送支持类型详见 mdn send 入参类型
利用 ws.close(code,reason) 方法关闭连接,参数含义详见 mdn close
核心事件
在客户端和 ws 服务器交互时, 提供了如下事件。
onopen当readyState的状态值从 0(CONNECTING) -> 1(OPEN) 时触发此事件,返回 event 事件onmessage当从服务端接收到数据时,触发此事件,返回 event 事件onerror当连接出错时触发该事件,返回 event 事件onclose当readyState的状态值切换到 3(CLOSED) 时触发此事件,返回 CloseEvent 事件
协议信息
实例化后的 ws 客户端,暴露了如下属性,来获取当前连接信息。
binaryType返回websocket连接所传输二进制数据的类型,返回值可以为如下字符串blob采用 blob 模式传输arraybuffer采用 ArrayBuffer 模式传输
bufferedAmount只读属性,返回放入发送缓冲区的字节长度extensions只读属性,返回服务器已选择的扩展值protocol只读属性,返回实例化此客户端时传入的 protocol 的值url只读属性,返回实例化此客户端时传入的 url 的值readyState返回 ws 客户端当前的连接状态,各值对应含义如下:0连接中,CONNECTING1连接成功,OPEN2连接正在关闭,CLOSING3连接已关闭, CLOSED