【问题标题】:Does the Signalr server send all pending requests as a single response to poll, while on longpolling?Signalr 服务器是否在长轮询时将所有挂起的请求作为单个响应发送到轮询?
【发布时间】:2017-07-05 05:05:57
【问题描述】:

我们正在收到对信号器客户端的待处理请求,这些请求在轮询响应中以数组的形式聚集在一起,如下所示:

{"C":"s-0,9E632",
"M":[
84
{"H":"MyHub","M":"SetSomething","A":[{"myProp1":"setting","myProp2":59.0}]}
1,
84
{"H":"MyHub","M":"SetSomething","A":[{"myProp1":"setting","myProp2":60.0}]}
1,
84
{"H":"MyHub","M":"SetSomething","A":[{"myProp1":"setting","myProp2":61.0}]} 
1,
84
{"H":"MyHub","M":"SetSomething","A":[{"myProp1":"setting","myProp2":62.0}]}
1,
6b
{"H":"MyHub","M":"SetMore","A":[{"myProp3":"Somestring","myProp4":0}]}
2
]}

通常对民意调查的单一响应如下:

{"C":"s-0,9E621","M":[
6b
{"H":"MyHub","M":"SetSomething","A":[{"myProp1":"setting","myProp2":59.0}]}
2
]}

我相信环形缓冲区将消息存储到 DefaultMessageBufferSize 限制,并且会在轮询时将这些消息发送给客户端。 我的问题是它们会被一个一个地发送,就像一个队列,一个对一个轮询的响应,还是作为对第一个轮询的响应一起发送的所有消息(就像我们得到的,上面提到的)?

背景和实际问题: 我们有一个在长轮询上工作的信号器客户端(C1)和我们在云中的 SignalR 服务器。有一个用户 (U1) 连接到服务器并为 C1 发送消息,我们使用服务器上的 Clients.User({C1}).{Method} 将这些消息转发给 C1。 当 U1 向 C1 发送多个快速请求,而 C1 无法足够快地处理它们时,我们会看到发送给 C1 的成束响应。 C1 未配置为处理成束响应,它拒绝该响应,并且我们看到服务器对 C1 的相同成束响应的无休止循环,每次进一步轮询。

希望对此有任何见解。 提前致谢。

【问题讨论】:

    标签: c# json signalr long-polling responseformat


    【解决方案1】:

    关于这个问题的答案,首先 SignalR 在长池中默认永远不会连接。

    SignalR的工作流程-

    1. 它尝试与 WebSocket 连接。

    2. 如果无法连接,则尝试连接服务器发送的事件。

    3. 即使失败,它也会尝试使用服务器框架。

    4. 即使失败,它也会使用长轮询作为后备。

    更多内容请关注here

    关于它的性能,你可以在here找到更多。

    因此,经过测试,SignalR 可以处理网络设备可以处理的请求,因此数据传输几乎没有限制。

    你的问题的答案-

    在您的情况下,我们需要检查几件事。

    1. 是否启用了 HTTPS?如果没有,请follow this link设置HTTPS,因为没有HTTPS,您将永远无法使用WebSocket,建议使用。

    2. 如果启用了 HTTP,那么它应该与 WebSocket 通信,如果网络正常,这种问题将永远不会发生。但是对于您的情况,我认为您的网络存在一些问题,因此丢失了一些数据,这就是它一次发送太多数据的原因。

    3. 请检查 signalR 的超时配置。您可以尝试更改 SignalR 的超时设置。

    我认为,如果您遵循这 3 件事,您可以找到解决问题的方法。

    【讨论】:

    • 1. websockets 不需要 Https。 2. 我了解 signalr 中的传输回退,但我的客户专门使用长轮询。 3. 本题与成绩无关。请您清楚地阅读问题。
    猜你喜欢
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多