出於某種原因,SignalR將在短時間後停止調用客戶端方法(我估計大約需要1小時或更少)。我有一個顯示警報的頁面...一個非常簡單的實現。下面是使用Javascript:SignalR在一段時間後停止工作
$(function() {
// enable logging for debugging
$.connection.hub.logging = true;
// Declare a proxy to reference the hub.
var hub = $.connection.alertHub;
hub.client.addAlert = function (id, title, url, dateTime) {
console.log(title);
};
$.connection.hub.start().done(function() {
console.log("Alert Ready");
});
});
如果我刷新頁面,它再次工作了大約一個小時,然後將停止在調用客戶端事件addAlert
。日誌中沒有錯誤,沒有警告。在日誌中的最後一個事件(比坪到服務器的其他)爲:
[15點十八分58秒GMT-0600(CST)] SignalR:在輪轂觸發客戶機轂事件 'addAlert' 'AlertHub' 。
很多這些事件會進入一段時間,然後停止,即使服務器仍然應該發送它們。
我在Mac和SignalR 2.0.0上使用Firefox 35.0.1。
我意識到解決方法是強制每10分鐘刷新一次頁面,但我正在尋找解決問題根本原因的方法。
我在服務器上啓用了SignalR跟蹤。在Alert頁面全新更新並且警報通過後,我在服務器上創建了一個「警報」。我等了大約10分鐘,我又試了一次,但未能通過。這裏的日誌讀什麼(遺憾的冗長,不知道什麼是有關):
SignalR.Transports.TransportHeartBeat Information: 0 : Connection b8b21c4c-22b4-4686-9098-cb72c904d4c9 is New.
SignalR.Transports.TransportHeartBeat Verbose: 0 : KeepAlive(b8b21c4c-22b4-4686-9098-cb72c904d4c9)
SignalR.Transports.TransportHeartBeat Verbose: 0 : KeepAlive(b8b21c4c-22b4-4686-9098-cb72c904d4c9)
SignalR.Transports.TransportHeartBeat Verbose: 0 : KeepAlive(b8b21c4c-22b4-4686-9098-cb72c904d4c9)
SignalR.Transports.TransportHeartBeat Verbose: 0 : KeepAlive(b8b21c4c-22b4-4686-9098-cb72c904d4c9)
有幾十更多SignalR.Transports.TransportHeartBeat
的消息,但沒有別的。
您是否在服務器端的集線器中設置了日誌,以查看客戶端在停止的活動之前是否斷開連接? – 2015-02-24 13:37:16
我沒有。我會這樣做併發布結果。謝謝。 – 2015-02-24 13:51:29
除了日誌。你使用什麼交通工具?你是否在經歷代理?如果是這樣,你有沒有嘗試過使用https? – Pawel 2015-02-24 18:22:42