美文网首页
Websocket最详细讲解(重连和心跳机制)

Websocket最详细讲解(重连和心跳机制)

作者: 扶得一人醉如苏沐晨 | 来源:发表于2022-08-15 16:07 被阅读0次

1. websocket 是什么?

websocket 是一种网络通信协议,与 http 语义一样,但功能不一样

http 也是一种网络通信协议,为什么不用 http 而用 websocket ?

2. websocket 与 http 有什么区别?

websocket 通信可由服务器发起,也可以由客户端发起。可以实现客户端与服务端长连接

http 通信只能由客户端发起。

WebSocket 触发事件

以下是 WebSocket 对象的相关事件。假定我们使用了以上代码创建了 Socket 对象:

WebSocket 方法

假定我们使用了以上代码创建了 Socket 对象:this.Socket.close()/this.Socket.send()

以上是Socket的基本使用

重连和健康检查

一般我们会写一个重连方法,在onError事件中,(连接失败时),重新调用重连方法

如何实现健康检查呢

思路:

通过setInterval定时任务每个15秒钟调用一次reconnect函数

reconnect会通过socket.readyState来判断这个websocket连接是否正常

如果不正常就会触发定时连接,每15s钟重试一次,直到连接成功

如果是网络断开的情况下,在指定的时间内服务器端并没有返回心跳响应消息,因此服务器端断开了。

服务断开我们使用ws.close关闭连接,在一段时间后,可以通过 onclose事件监听到。

心跳机制是什么,有什么意义

在使用websocket的过程中,有时候会遇到网络断开的情况,但是在网络断开的时候服务器端并没有触发onclose的事件。这样会有:服务器会继续向客户端发送多余的链接,并且这些数据还会丢失。所以就需要一种机制来检测客户端和服务端是否处于正常的链接状态。因此就有了websocket的心跳了。还有心跳,说明还活着,没有心跳说明已经挂掉了。

1. 为什么叫心跳包呢?

它就像心跳一样每隔固定的时间发一次,来告诉服务器,我还活着。

2. 心跳机制是?

心跳机制是每隔一段时间会向服务器发送一个数据包,告诉服务器自己还活着,同时客户端会确认服务器端是否还活着,如果还活着的话,就会回传一个数据包给客户端来确定服务器端也还活着,否则的话,有可能是网络断开连接了。需要重连~

那么需要怎么去实现它呢?如下所有代码:

 什么时候触发呢,

在onOpen事件触发的时候第一次调用

 在onMessage事件的方法中,如果收到后端的消息了,重置心跳

 最后一定要记得关闭定时器和socket通信

相关文章

网友评论

      本文标题:Websocket最详细讲解(重连和心跳机制)

      本文链接:https://www.haomeiwen.com/subject/ncflgrtx.html