From d756c32ff163a6884d30dc1f69074a8e7b63213c Mon Sep 17 00:00:00 2001 From: leeliforever Date: Sat, 7 Mar 2026 18:19:55 +0800 Subject: [PATCH] feat:add auto pollTimer --- static/templates/chat_main.html | 60 +++++++++++++++++++++++++++++++++ static/templates/chat_page.html | 56 ++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+) diff --git a/static/templates/chat_main.html b/static/templates/chat_main.html index 9d14dfb..9d7bc94 100644 --- a/static/templates/chat_main.html +++ b/static/templates/chat_main.html @@ -394,6 +394,7 @@ sendDisabled:false, showFaceIcon:false, showLoadMore:false, + pollTimer:null, messages:{ page:1, pagesize:15, @@ -766,10 +767,63 @@ } if(_this.messages.page==1){ _this.scrollBottom(); + _this.startPollMessages(); } _this.messages.page++; }); }, + startPollMessages(){ + let _this=this; + if(_this.pollTimer){ + clearInterval(_this.pollTimer); + } + _this.pollTimer=setInterval(function(){ + if(!_this.currentGuest) return; + let params={ + page:1, + pagesize: 20, + visitor_id: _this.currentGuest, + } + $.get("/2/messagesPages",params,function(res){ + let msgList=res.result.list; + let existKeys={}; + for(let i=0;i<_this.msgList.length;i++){ + var m=_this.msgList[i]; + if(m.id){ + existKeys['id_'+m.id]=true; + } + if(m.time && m.content){ + existKeys[m.time+'_'+m.content]=true; + } + } + let newMsgs=[]; + for(let i=msgList.length-1;i>=0;i--){ + let item=msgList[i]; + var key1=item.id?'id_'+item.id:''; + var key2=item["create_time"]+'_'+replaceContent(item["content"]); + if((key1 && existKeys[key1]) || existKeys[key2]) continue; + if (item["mes_type"] == "kefu") { + item.is_kefu = true; + item.avator=item["kefu_avator"]; + item.name=item["kefu_name"]; + } else { + item.is_kefu = false; + item.avator=item["visitor_avator"]; + item.name=item["visitor_name"]; + } + item.content=replaceContent(item["content"]); + item.time = item["create_time"]; + newMsgs.push(item); + } + if(newMsgs.length>0){ + for(let i=0;i=0;i--){ + let item=msgList[i]; + var key1=item.id?'id_'+item.id:''; + var key2=item["create_time"]+'_'+replaceContent(item["content"]); + if((key1 && existKeys[key1]) || existKeys[key2]) continue; + if (item["mes_type"] == "kefu") { + item.is_kefu = true; + item.avator=item["kefu_avator"]; + } else { + item.is_kefu = false; + item.avator=item["visitor_avator"]; + } + item.time = item["create_time"]; + item.content=replaceContent(item["content"]); + newMsgs.push(item); + } + if(newMsgs.length>0){ + for(let i=0;i