一、什么是Websocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它可以让客户端和服务器之间进行实时的双向通信。 WebSocket 使用一个长连接,在客户端和服务器之间保持持久的连
一、什么是WebsocketWebSocket 是一种在单个 TCP 连接上进行 全双工 通信的协议,它可以让客户端和服务器之间进行实时的双向通信。 WebSocket 使用一个长连接,在客户端和服务器之间保持持久的连接,从而可以实时地发送和接收数据。 在 WebSocket 中,客户端和服务器之间可以互相发送消息,客户端可以使用 JavaScript 中的 WebSocket API 发送消息到服务器,也可以接收服务器发送的消息。 二、Websocket特点简单来说,websocket 具有 双向通信,实时性强,支持二进制,控制开销 的特点。 1、协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。 2、实时通信,服务器可以随时主动给客户端下发数据。 3、保持连接状态,Websocket需要先创建连接,所以是一种有状态的协议,之后通信时就可以省略部分状态信息。 4、控制开销,连接创建后,服务器和客户端之间交换数据时,用于协议控制的数据包头部相对较小。在不包含扩展的情况下,对于服务器到客户端的内容,此头部大小只有2至10字节(和数据包长度有关);对于客户端到服务器的内容,头部还需要加上额外的4字节的掩码。 5、实现简单,建立在 TCP 协议之上,服务器端的实现比较容易,并且没有同源限制,客户端可以与任意服务器通信。 6、支持二进制传输,Websocket定义了二进制帧,可以发送文本,也可以发送二进制数据。 7、与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。 8、支持扩展,用户可以扩展协议、实现部分自定义的子协议,如部分浏览器支持压缩等。 三、WebSocket与HTTP的区别websocket和http都是基于TCP的应用层协议,使用的也是 80 端口(若运行在 TLS 之上时,默认使用 443 端口)。 其区别主要就在于连接的性质和通信方式。 WebSocket是一种双向通信的协议,通过一次握手即可建立持久性的连接,服务器和客户端可以随时发送和接收数据。 而HTTP协议是一种请求-响应模式的协议,每次通信都需要发送一条请求并等待服务器的响应。 WebSocket的实时性更好,延迟更低,并且在服务器和客户端之间提供双向的即时通信能力,适用于需要实时数据传输的场景。 四、常见应用场景
五、websocket实例
为了建立一个 WebSocket 连接,客户端浏览器首先要向服务器发起一个 HTTP 请求,这个请求和通常的 HTTP 请求不同,包含了一些附加头信息,其中附加头信息"Upgrade: WebSocket"表明这是一个申请协议升级的 HTTP 请求,服务器端解析这些附加的头信息然后产生应答信息返回给客户端,客户端和服务器端的 WebSocket 连接就建立起来了,双方就可以通过这个连接通道自由的传递信息,并且这个连接会持续存在直到客户端或者服务器端的某一方主动的关闭连接。 1)Websocket事件
2)Websocket方法
参数:
参数:
3)Websocket对象属性
4)websocket请求报文
5)websocket连接生命周期
6)简单应用示例
六、websocket心跳机制1、作用:使 WebSocket 连接保持长连接,避免断开连接的情况发生。同时,心跳机制也可以检查WebSocket连接的状态,及时处理异常情况。还可以减少WebSocket连接及服务器资源的消耗。 2、原理:是利用心跳包及时发送和接收数据,保证WebSocket长连接不被断开。 3、详细流程:
4、实现方式
5、WebSocket重连 重连意思就是在WebSocket断开之后重新建立连接,这里指由于异常断开需要重新连接。 常用实现方法有下:
6、通过WebSocket心跳机制,实现重连 思路: 在建立长连接的时候开启心跳 > 通过和服务端发送信息,得到服务端给返回的信息,然后重置心跳 > 清除时间,再重新开启心跳。(如果网络断开的话,会执行方法,重新连接)
|
2022-04-23
2023-04-23
2024-04-08
2024-11-15
2022-10-16