From 3121440c1b29c555e817055723de656509c9c752 Mon Sep 17 00:00:00 2001
From: liuhanqing <447067298@qq.com>
Date: Tue, 26 Jan 2021 19:25:00 +0800
Subject: [PATCH] =?UTF-8?q?=E3=80=90message=E3=80=91websocket=E5=8F=91?=
=?UTF-8?q?=E9=80=81=E6=B6=88=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../expand/module/webSocket/webSocket.js | 40 +++++++++++++++----
.../assets/modular/system/index/message.js | 1 +
src/main/webapp/pages/index.html | 27 +++++++++----
src/main/webapp/pages/layout/_header.html | 4 +-
.../pages/modular/system/index/message.html | 2 +-
5 files changed, 56 insertions(+), 18 deletions(-)
diff --git a/src/main/webapp/assets/expand/module/webSocket/webSocket.js b/src/main/webapp/assets/expand/module/webSocket/webSocket.js
index ab9a20ca..be271fb9 100644
--- a/src/main/webapp/assets/expand/module/webSocket/webSocket.js
+++ b/src/main/webapp/assets/expand/module/webSocket/webSocket.js
@@ -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();
diff --git a/src/main/webapp/assets/modular/system/index/message.js b/src/main/webapp/assets/modular/system/index/message.js
index 260cc3cb..dcfae1b0 100644
--- a/src/main/webapp/assets/modular/system/index/message.js
+++ b/src/main/webapp/assets/modular/system/index/message.js
@@ -20,6 +20,7 @@ layui.use(['element', 'admin', 'HttpRequest', 'func'], function () {
var httpRequest = new HttpRequest(Feng.ctxPath + "/sysMessage/allMessageReadFlag", 'get', function (data) {
$('#messageClearBtn').parents('.layui-tab-item').addClass('show-empty');
$('#msgCount').html(0);
+ $('#messageDot').hide();
Feng.success("标记已读成功!");
}, function (data) {
Feng.error("标记已读失败!" + data.responseJSON.message);
diff --git a/src/main/webapp/pages/index.html b/src/main/webapp/pages/index.html
index 0e58e98b..82674252 100644
--- a/src/main/webapp/pages/index.html
+++ b/src/main/webapp/pages/index.html
@@ -45,13 +45,14 @@
+