我正在学习使用 SignalR,到目前为止我在这方面取得了成功。我可以实现集线器,我可以实现业务逻辑,我可以从我想要的服务器调用客户端函数,我可以从客户端调用服务器端方法,这东西很棒。令我困惑的是理论。
事实上,我从这个视频中收集了信息。SignalR 正在使用WebSockets,它通过单个TCP连接提供全双工通道。如果没有可用的 WebSocket,则回退协议将为EventSource。如果不可用,则将使用 Forever Frame。如果不可用,则将使用长轮询。对我来说很奇怪的是,一个非常老套的解决方案,比如永远框架比旧的约定更受欢迎,我对 SignalR 决定将永远框架作为第三个选项并将轮询作为第四个选项背后的基本原理感兴趣。
我试图找出这个问题的答案,我发现据传,与永远帧相比,长轮询的最大延迟时间是 3 倍。这是事实吗?如果是,是所有浏览器的事实,还是部分浏览器的事实?