定义
WebSocket是HTML5提供的一种在单个TCP连接上进行双工通讯的协议。(TCP可以理解为数据传输层),WebSocket允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就可以直接创建持久性的连接,并进行双向数据传输。
传统实现双向数据传输用的是aiax轮询,就是规定多久浏览器向服务器发送一次http请求,然后将服务器最新的数据返回到客户端,这样子会消耗大量的宽带内存,举个例子就会比价直观:有一条大河,河的两边是A、B两个人,A想要到达河的对岸B的地方,B也想到达河的对岸A的地方,传统的方式是会有一条船在A、B两个地方来回不断穿梭,有人上船就会运送到对岸,没人上船,船也会自动跑来跑去,这样子就会消耗大量的资源,效率很低,现在的方式是你需要上船到达对岸,船就会开动,效率大大的提高了。
用法
获取到WebSocket连接后,你可以通过send()方法来向服务器(TCP)发送数据,并通过onmessage事件来接收服务器返回的数据。
创建一个WebSocket对象:
let Socket = new WebSocket(url, [protocol])
以上第一个参数url是指定连接的URL,第二个参数是可选的,指定可接收的子协议
属性
Socket.readyState表示连接状态,可以是一下值:
0-表示连接尚未建立
1-表示连接已建立,可以进行通信
2-表示连接正在进行关闭
3-表示连接已经关闭或者连接不能打开
Socket.bufferedAmount只读属性 bufferedAmount 已被 send() 放入正在队列中等待传输,但是还没有发出的 UTF-8 文本字节数。一旦发送了所有排队的数据,该值就会重置为零。连接关闭时,该值不会重置为零; 如果你继续发送数据send(),这将继续攀升。
WebSocket 事件
Socket.onopen 连接建立时触发
Socket.onmessage 客户端接收服务端数据时触发
Socket.onerror 通信发生错误时触发
Socket.onclose 连接关闭时触发
WebSocket 方法
Socket.send() 使用连接发送数据
Socket.close() 关闭连接
WebSocket 实例
WebSocket协议本质上是一个基于TCP的协议。客户端和服务器端的 WebSocket 连接建立起来后,双方就可以通过这个连接通道自由的传递信息,并且这个连接会持续存在直到客户端或者服务器端的某一方主动的关闭连接。
网友评论