簡體   English   中英

最近兩分鍾如何檢測事件未觸發

[英]how to detect event not get trigger from last two minutes

我正在為管理員客戶 (nodejs + socketio + express)進行實時聊天。 在聊天之間,當客戶等待兩分鍾以上的管理員響應時,我需要向客戶顯示消息“請稍后再試”

例如客戶從此事件中獲得響應

socket.on('Admin Response',function(msg){

});

如何跟蹤此事件在最近兩分鍾內未觸發?

您可以將套接字事件包裝到一個可觀察的事件中,然后僅使用.debounce運算符在不活動2分鍾(未經測試)后才觸發“請稍后再嘗試”文本:

var adminResponses = Rx.Observable.fromEventPattern(
    function add (h) {
      socket.on('Admin Response',h);
    }
).debounce(120000); //120000 ms = 2 mins

var subscription = adminResponses.subscribe(
    function(msg) {
         /* show "please try sometime later" text */ 
    });

一種簡單的方法如下:

var timeout=setTimeout(sendMessage,120000);

socket.on('Admin Response',function(msg){
    clearTimeout(timeout);
    var timeout=setTimeout(sendMessage,120000);
});

對於較大的應用程序,我會將上次發送時間(和其他信息)存儲在定義連接的對象中。 有一個正常的過程查找沒有活動的連接,並進行適當的處​​理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM