// 1.建立socket链接
scoket构造函数
-
请求地址参数获取
-
websocket实例
-
websocket 状态
-
类需要的参数,把类的参数传入这里,方便调用
-
重连计时器
-
心跳计时器
-
信息onmessage缓存方法
-
心跳时间 5秒一次
-
是否自动重连
-
重连间隔时间
-
重连次数
-
记录是否正在重新连接
constructor(params = {}) {
var ishttps = "https:" == document.location.protocol ? true : false;
if (ishttps) {
params["url"] = process.env.VUE_APP_SOCKET_URL_WSS;
} else {
params["url"] = process.env.VUE_APP_SOCKET_URL_WS;
}
this.ws = null; /* websocket实例 */
this.alive = null; /* 状态 */
this.params = params; /* 把类的参数传入这里,方便调用 */
this.reconnect_timer = null; /* 重连计时器 */
this.heart_timer = null; /* 心跳计时器 */
this.message_func = null; /* 信息onmessage缓存方法 */
this.heartBeat = 5000; /* 心跳时间 5秒一次 */
/* 心跳信息 */
this.reconnect = true; /* 是否自动重连 */
this.reconnectTime = 5000; /* 重连间隔时间 */
this.reconnectTimes = 0; /* 重连次数 */
this.allTimes = 20;
this.reconnecting = false; // 记录是否正在重新连接
this.heartBeats = 1;
}
初始化websocket socketjs.init();
//重中之重,不然重连的时候会越来越快
-
清除重连计数器,清除心跳计数器
-
取出实例中的参数
-
设置连接路径
socketMsg.onMessage();
// 2. 恢复现场数据
socketHttp.init();
清除定时器(重连定时器,心跳计时器)
初始化参数
websocket实例
服务器地址参数
token检测
获取token
创建带有服务器地址的 websocket 实例,客户端就会与服务器进行连接
信息缓存方法如果有,就调用 onmessage 方法
websocket实例默认连接成功后的回调函数
- 连接成功后,心跳次数计数为 1 ,
- 如果重连标识符为 true ,说明需要重连,此时重连成功后,需要把标识符改为 false
连接后进入心跳状态
- 如果心跳次数大于3,存活状态赋值为false , 开启重连计时器
- 如果状态存活 this.alive为true
- 设置心跳定时器,5秒一次,发送存活状态和userId,心跳计数器累加 1 ,、
- 心跳状态中的函数执行
websocket实例默认连接关闭后的回调函数
- 实例对象的 onclose属性,用于指定连接关闭后的回调函数
- 设置实例状态为断开 this.alive 为false
- 清除心跳定时器
- 当重连标识符为 true 时,开启重连
// 接收服务器推送来得消息处理 socketMsg.onMessage();
该函数调用 socketjs.onmessage(func)
onmessage方法中,给实例 onmessage 方法 即[this.ws.onmessage] 获取从服务器中传输来的 data
缓存 信息onmessage缓存方法, 执行func这个函数
根据不同actiontype,执行对应的action(登录成功,创建会话,终止会话,创建监控对话,监控对话结束,访客进入排队,排队超时,坐席消息,同事消息....)
// 2. 恢复现场数据 socketHttp.init();
获取会话列表
获取排队列表