出于某种原因,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