【发布时间】:2014-10-24 12:46:05
【问题描述】:
我正在编写一个严重依赖 SignalR 的应用程序。最近,我不得不与卫星 ISP 提供商合作。这带来了一个大问题,卫星的 700 毫秒延迟似乎给 SignalR 带来了困难。我可以使用延迟约为 50 毫秒的 4G 网络进行测试,并且在那里一切正常。我打开了客户端跟踪,问题出在它尝试加入集线器时。
这是服务器上 Join 方法的代码:
public Task Join(string groupName)
{
var hub = GlobalHost.ConnectionManager.GetHubContext("myHub");
var results = hub.Groups.Add(Context.ConnectionId, groupName);
return results;
}
在日志中,我看到:
[23:41:14 GMT-0400 (Eastern Daylight Time)] SignalR: Client subscribed to hub 'myHub'. jquery.signalR-2.1.1.min.js:8
[23:41:14 GMT-0400 (Eastern Daylight Time)] SignalR: Negotiating with '/signalr/negotiate?clientProtocol=1.4&connectionData=%5B%7B%22name%22%3A%22myHub%22%7D%5D'. jquery.signalR-2.1.1.min.js:8
[23:41:15 GMT-0400 (Eastern Daylight Time)] SignalR: Connecting to websocket endpoint 'ws://myurl/signalr/connect?transport=webSockets&clientProtocol=1.4&connectionToken=myToken&connectionData=%5B%7B%22name%22%3A%22myHub%22%7D%5D&tid=10'. jquery.signalR-2.1.1.min.js:8
[23:41:30 GMT-0400 (Eastern Daylight Time)] SignalR: Websocket opened. jquery.signalR-2.1.1.min.js:8
[23:41:30 GMT-0400 (Eastern Daylight Time)] SignalR: webSockets transport selected. Initiating start request. jquery.signalR-2.1.1.min.js:8
[23:41:31 GMT-0400 (Eastern Daylight Time)] SignalR: The start request succeeded. Transitioning to the connected state. jquery.signalR-2.1.1.min.js:8
[23:41:31 GMT-0400 (Eastern Daylight Time)] SignalR: Now monitoring keep alive with a warning timeout of 13333.333333333332 and a connection lost timeout of 20000. jquery.signalR-2.1.1.min.js:8
[23:41:31 GMT-0400 (Eastern Daylight Time)] SignalR: Invoking myHub.Join jquery.signalR-2.1.1.min.js:8
[23:41:31 GMT-0400 (Eastern Daylight Time)] SignalR: Invoking myHub.Join
它停在那里。当我尝试使用 4G 连接(即低延迟)时,我得到回调日志:
[23:41:31 GMT-0400 (Eastern Daylight Time)] SignalR: Invoked myHub.Join jquery.signalR-2.1.1.min.js:8
[23:41:31 GMT-0400 (Eastern Daylight Time)] SignalR: Invoked.myHub.Join
我正在利用 Azure 服务总线来处理消息传递部分。
有人知道吗?尝试使用 Signalr 配置设置,但没有成功。
它对我不起作用这一事实并不是什么大问题,我对 VPN 也有同样的问题,但我有一种感觉,如果我找不到解决方法,我会让很多用户失望。 .. 就像来自印度的用户,那里的延迟更高..
【问题讨论】:
-
您的两个日志显示相同的最后两行。卫星 abd 4G 连接有什么区别?日志没有显示任何错误。
-
4G 上额外的 2 行显示调用与调用.. 回调正在记录它们。我没有收到任何错误...当客户端在高延迟连接(卫星)上加入集线器时,回调没有启动,这就是为什么我在日志中看不到“调用”消息的原因。与 4g 的区别在于它具有 50 毫秒的低延迟,而卫星则为 700 毫秒。这只是为了证明信号器在低延迟连接后面工作,但它似乎不适用于高延迟连接。因为客户端无法加入集线器,所以它没有收到任何信号器消息。
标签: azure websocket signalr latency