From 80a2392b1413bd1356324759ed902fd7124aeb0c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 06 十二月 2024 17:32:40 +0800
Subject: [PATCH] 10162 后台优化(优化聊天监控:支持长轮询方式,聊天内容不删除,重复打开依然显示最近x条;)
---
serverinfo/chatmonitor.php | 49 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 48 insertions(+), 1 deletions(-)
diff --git a/serverinfo/chatmonitor.php b/serverinfo/chatmonitor.php
index 6950cf1..82e57f7 100644
--- a/serverinfo/chatmonitor.php
+++ b/serverinfo/chatmonitor.php
@@ -92,6 +92,9 @@
<script type='text/javascript' src="/js/common.js"></script>
<script type="text/javascript">
+ var linkType = 1; // 杩炴帴鏂瑰紡锛� 0-榛樿浣跨敤socket锛�1-闀胯疆璇�
+ var lastChat = {};
+ var errorCount = 0;
var address = "<?php echo $address ?>";
var port = "<?php echo $port ?>";
var spid = "<?php echo $spid ?>";
@@ -107,8 +110,51 @@
var scrolling = 1; //鑷姩婊氬睆锛岄粯璁ゅ紑鍚�
window.onload = function() {
- createWebSocket();
+ if (linkType == 0) {
+ createWebSocket();
+ } else {
+ requestChatContent();
+ }
}
+
+ function sleep(ms) {
+ return new Promise(resolve => setTimeout(resolve, ms));
+ }
+
+ function requestChatContent() {
+ // console.log("requestChatContent", spid, lastChat);
+ var params = "spid=" + spid;
+ if (lastChat.AccountID) {
+ params += "&AccountID=" + lastChat.AccountID + "&Time=" + lastChat.Time + "&Content=" + lastChat.Content;
+ }
+ ajaxRequest("chatmonitors2.php?" + params,
+ function(xmlhttp) {
+ var sleepSeconds = 1;
+ if (xmlhttp.responseText) {
+ try {
+ var parseData = JSON.parse(xmlhttp.responseText);
+ // console.log(parseData);
+ switch (parseData.MsgType) {
+ case "CHAT":
+ addChatContent(parseData.Msg);
+ break;
+ default:
+ break;
+ }
+ } catch (error) {
+ errorCount += 1;
+ console.error("error:", errorCount, error);
+ // 姣忛敊涓�娆″鏆傚仠1绉掞紝鏈�楂樻殏鍋�1鍒嗛挓
+ sleepSeconds = Math.min(errorCount, 60);
+ }
+ }
+ sleep(sleepSeconds * 1000).then(() => {
+ requestChatContent();
+ });
+ }, "POST"
+ );
+ }
+
// 鏇存柊鏁忔劅璇�
function updSensitiveWord(words) {
@@ -154,6 +200,7 @@
if (chat.OperatorID != spid) {
continue;
}
+ lastChat = chat;
// 鏇挎崲鏁忔劅璇嶆牱寮�
let content = chat.Content;
for (let i = 0; i < SensitiveWords.length; i++) {
--
Gitblit v1.8.0