介绍:
WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。
全双工(Full Duplex)是通讯传输的一个术语。通信允许数据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合。全双工指可以同时(瞬时)进行信号的双向传输(A→B且B→A)。指A→B的同时B→A,是瞬时同步的。
WebSocket 是独立的、创建在 TCP 上的协议。
Websocket 通过HTTP/1.1 协议的101状态码进行握手。
1.较少的控制开销。
2.更强的实时性
3.保持连接状态(可省略大部分认证信息)
流程:
创建一个ws类
构造器中有这个class的实例,和socket连接 对象
1.保存单例
如果 当前实例存在 返回当前实例 没有实例则创建新的链接
2.创建连接,写各个方法的回调
在连接成功的回调中 启动心跳检测,
在关闭的回调中根据业务 决定是否写重连
在 发生错误的回调执行 重连
检测网络状态 断网时 断开
3.重试机制
非主关闭执行重连
4.自定义异常状态
消息10秒不回复,并且累积10条,即为异常 ,根据业务处理
5,发消息的节流
根据业务是否需要
问:怎么根据业务 决定是否写重连
答:创建一个变量 (1,2) 在主动关闭的函数中为1,非主关闭2 重连函数中为1时直接返回
问 :什么是心跳检测
*发送方按照一定规则(周期性发送、空闲发送等等)向接收方发送固定格式的消息,接受方收到消息后回复一个固定格式的消息 ,
*如果长时间没有收到,则认为当前连接失效,将其断开。
*webSocket一般是间隔90秒内无操作会自动断开,因此,需要加入一个心跳机制,以防止ws断开
有重连时重置计时器