2017-08-09 31 views
0

我正在使用SignalR - 传输类型longPolling。我能够看到功能按预期工作。实时,我可以看到有相当大数量的signalR调用严重影响了性能。Signalr调用与longPolling传输类型相当大 - 性能影响

看来,基于我的分析,longPolling会创建连接并使用它并关闭它。然后再次连接将按需创建。我觉得,这可能是在某个时间点看到大量signalR呼叫的原因。

您可以分享您的想法解决/避免大量的SignalR电话?

当我尝试使用foreverFrame作为传输类型时,SignalR连接未启用。我可以在控制台中看到以下错误。

SignalR:无法使用永久帧源连接,它在3000s后超时 SignalR:永久停止帧 SignalR:没有传输可以成功初始化。尝试指定一个不同的传输方式或根本不执行自动初始化 启动Signalr Hub时发生问题。

回答

0

这似乎是基于文档的长轮询的默认行为 - 长轮询不会创建持久连接,而是使用请求保持打开的状态轮询服务器,直到服务器响应,此时连接关闭,并立即请求新的连接。这可能会在连接重置时引入一些延迟。

您对foreverFrame的使用可能无法正常工作,因为传输在您使用的浏览器中不可用。

我还没有理解为什么有人会强制运输到一个特定的。可能,我只是没有遇到这种情况下,它是必需的。

SignalR将处理确定每个客户使用哪个传输的方面,这是它的一大优点。

+0

感谢您的输入。有没有办法避免来自signalr/poll的轮询呼叫?transport = longPolling ....? – SNithish

+0

感谢您的输入。有没有办法避免来自signalr/poll的轮询呼叫?transport = longPolling ....? ,这样我的服务器就不会遇到那么多的请求。 您的意思是,我们不需要使用下面的代码段明确提及传输类型: $ .connection.hub.start({transport:“longPolling”})? OR $ .connection.hub.start({运输:“foreverFrame”}) 如果我们希望signalR通过自身来确定运输类型,然后做我们需要删除上面的设置/我们需要设置为自动还是无?你能分享你的想法吗? – SNithish

+0

任何最新版本的signalR版本都将有助于避免大量信号/轮询?transport = longpolling .... call每隔2分钟会触发一次服务器?目前我正在使用SignalR1.1.2版本。 – SNithish