我已經有一個被用作聊天客戶端的SignalR的實現。問題似乎是我有一個客戶端計時器,即ping服務器以通知所有其他客戶端的用戶狀態。SignalR javascript客戶端計時器錘擊連接的服務器
在這種情況下,我有一個心跳和最新活動。心跳每十五秒鐘左右到達一次服務器,最新的活動跟蹤用戶的交互性。這兩個值被傳遞給服務器,以便可以通知所有其他客戶端其他人的狀態。即:如果用戶A沒有移動鼠標超過一分鐘,當他們的心跳擊中服務器時,它將通過SignalR向其他用戶廣播,他們現在'離開'了。
反正我有在SignalR連接似乎呈指數級增長的問題中,連接到聊天應用程序的用戶數量越多。
這是客戶JS計時器的,我懷疑是腥的源代碼,但我不知道爲什麼:
define(['jquery', 'underscore', 'backbone'],
function ($, _, Backbone) {
var Timer = Backbone.Model.extend({
defaults: {
interval: 1 * 10 * 1000,
timeout: null
},
initialize: function (options) {
_.bindAll(this, 'start', 'tick', 'stop', 'tickNow');
if (options.interval) {
this.set('interval', options.interval);
}
},
start: function() {
var timer = setTimeout(this.tick, this.get('interval'));
this.set('timeout', timer);
},
tick: function() {
var self = this;
self.trigger('timerexpired', this);
self.start();
},
tickNow: function() {
var self = this;
self.stop();
self.trigger('timerexpired', this);
self.start();
},
stop: function() {
clearTimeout(this.get('timeout'));
}
});
return Timer;
});
感謝您的回答,但限制不是客戶端或服務器端,因爲dev規模最多爲三到四位用戶。我已經將問題縮小到最有可能是上面的計時器 – HCdev