[英]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.