关于WebSocket协议
websocket是单个tcp连接上进行全双工通信的协议
在websocket的api中,客户端与服务器只需要进行一次握手就可以保持持久的连接,并可以双向传输数据
与http不同的是,websocket需要先创建连接,连接成功之后就可以进行通信,而且通信时,请求头部可以减少部分状态信息
创建websocket对象:const socket = new websocket(url, [protocol]) url就是需要连接的url,protocol是子协议(可选)
websocket协议的属性,事件与方法有如下:
属性: readystate (socket.readystate)
0:连接尚未创建
1:已创建连接,可以进行通信
2:连接正在关闭
3:连接已关闭,或连接无法打开
bufferedamount-----只读,表示已被send()放入队列中等待传输,但utf-8文本字节数未发出
事件: open (socket.onopen) 连接建立成功时触发(可以进行数据传输)
message (socket.onmessage) 客户端接受服务器数据时触发 (可以处理服务器传输过来的数据)
error (socket.onerror) 通信发生错误时触发
close (socket.close) 连接关闭成功时触发
方法: send() (socket.send()) 客户端与服务器传输数据时使用的方法
close() (socket.close()) 关闭连接
关闭websocket连接时,需要客户端与服务器一起断开,可以由客户端发起关闭,也可以由服务器发起关闭
客户端发起关闭: 由客户端调用close()方法,这个操作会向服务器发起断开连接的请求,服务器接收到这个请求后断开tcp连接
服务器发起关闭: 由服务器向客户端发起断开连接的请求,这个请求可以传输一些信息过来,比如状态码,客户端会触发close事件,这时就可以调用close()来断开连接了