|
|
|
@ -16,7 +16,8 @@ layui.define(['jquery', 'layer'], function (exports) {
|
|
|
|
|
_self.version = "1.0";//版本
|
|
|
|
|
_self.reCount = param.reCount ? param.reCount : 5;//重连次数
|
|
|
|
|
_self.lockReconnect = false; //重连标识
|
|
|
|
|
_self.wsReconnectHandler = null; //重连标识
|
|
|
|
|
_self.heartCheckHandler = null; //心跳检测
|
|
|
|
|
_self.wsReconnectHandler = null; //重连处理器
|
|
|
|
|
var WebSocket = window.WebSocket || window.MozWebSocket || 0;
|
|
|
|
|
if (!WebSocket) {
|
|
|
|
|
_self.result = 0;
|
|
|
|
@ -27,8 +28,9 @@ layui.define(['jquery', 'layer'], function (exports) {
|
|
|
|
|
|
|
|
|
|
var func = {};
|
|
|
|
|
var msgList = [];//等待发送的信息
|
|
|
|
|
|
|
|
|
|
// 连接方法
|
|
|
|
|
_self.connect = function () {
|
|
|
|
|
debugger
|
|
|
|
|
try {
|
|
|
|
|
func.WebSocket = new WebSocket(param.wsUrl);
|
|
|
|
|
if (func.WebSocket) {
|
|
|
|
@ -41,8 +43,25 @@ layui.define(['jquery', 'layer'], function (exports) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_self.reconnect = function (msg) {
|
|
|
|
|
debugger
|
|
|
|
|
// 心跳检测
|
|
|
|
|
_self.heartCheck = function () {
|
|
|
|
|
// 15s 发送心跳
|
|
|
|
|
_self.heartCheckHandler && clearTimeout(_self.heartCheckHandler);
|
|
|
|
|
_self.heartCheckHandler = setTimeout(function () {
|
|
|
|
|
try {
|
|
|
|
|
// 发送心跳检测
|
|
|
|
|
_self.send("&")
|
|
|
|
|
} catch (e) {
|
|
|
|
|
(param.connectErr || emptyFun)(e);
|
|
|
|
|
_self.lockReconnect = false;
|
|
|
|
|
_self.reconnect()
|
|
|
|
|
}
|
|
|
|
|
setTimeout(_self.heartCheck, 15000)
|
|
|
|
|
}, 15000)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 重新连接方法
|
|
|
|
|
_self.reconnect = function () {
|
|
|
|
|
if (_self.lockReconnect || _self.reCount <= 0) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
@ -55,8 +74,9 @@ layui.define(['jquery', 'layer'], function (exports) {
|
|
|
|
|
_self.lockReconnect = false;
|
|
|
|
|
}, 1000)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 发送消息方法
|
|
|
|
|
_self.send = function (msg) {
|
|
|
|
|
debugger
|
|
|
|
|
var state = func.WebSocket.readyState;
|
|
|
|
|
if (state > 1) {
|
|
|
|
|
console.log("连接已经失败,状态码为:" + state);
|
|
|
|
@ -69,11 +89,13 @@ layui.define(['jquery', 'layer'], function (exports) {
|
|
|
|
|
func.WebSocket.send(msg);
|
|
|
|
|
}
|
|
|
|
|
if (typeof param.WsSend === 'function') {
|
|
|
|
|
param.WsSend(msg);
|
|
|
|
|
param.wsSend(msg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
_self.close = function (a) {
|
|
|
|
|
|
|
|
|
|
// 关闭连接方法
|
|
|
|
|
_self.close = function (event) {
|
|
|
|
|
try {
|
|
|
|
|
func.WebSocket.close();
|
|
|
|
|
} catch (e) {
|
|
|
|
@ -82,10 +104,12 @@ layui.define(['jquery', 'layer'], function (exports) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 绑定ws事件
|
|
|
|
|
_self.initEventHandle = function () {
|
|
|
|
|
try {
|
|
|
|
|
func.WebSocket.onopen = function (event) {
|
|
|
|
|
_self.reCount = 5;
|
|
|
|
|
_self.heartCheck();
|
|
|
|
|
for (var i = 0; i < msgList.length; i++) {
|
|
|
|
|
func.WebSocket.send(msgList[i]);
|
|
|
|
|
msgList.shift();
|
|
|
|
|