我知道 SignalR 有它的传输方法层次结构:Websocket->服务器发送事件->永远帧->长轮询
但是当我检查每个浏览器中的控制台时,我注意到传输始终长轮询。
我使用的是 Windows 7、IIS Express 7.5 和 Visual Studio 2013(当然还有 SignalR 2.0)。
我知道 Websocket 仅受 IIS 8 支持,但至少 IE 的 SSE 或 Forever Frame 应该可以工作。
例如,在 Google Chrome 中,我得到以下信息:
这意味着 Chrome 正在尝试使用 SSE,对吧?但为什么会被取消呢?
这里是 Fiddler 与 Internet Explorer 的屏幕截图:
它是蓝色的......代码是200。(为什么有不同的端口?该网站在端口4040下运行,但11437来自哪里?) 甚至没有解释为什么 IE 不继续使用 SSE。
我的意思是,SSE/Forever Frame 确实可以与 IIS 7.5 一起使用,不是吗?
提前谢谢您!
PS:在你问之前,我在家并且没有代理
最佳答案
对端口 11437 的 SignalR 请求是由 Visual Studio 的新 Browser Link feature 发出的。可以禁用它。
您能否向我们展示您的服务器端代码(特别是 OnConnected 中的任何内容)?查看对 SSE 和 ForeverFrame/connect 请求的响应也会很有帮助。
最后,看看SignalR's server-side tracing可能会有帮助。
关于asp.net - IIS 7.5 上的 SignalR 始终对每个浏览器使用长轮询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21652767/