SignalR是用于实时连接的传输的抽象。我仍然想知道它究竟是如何确定应该使用哪种传输方法,具体取决于各种因素。 我使用可用的文档做了一些研究,并查看了源代码,并想出了它是如何工作的。
所以我的实际问题是,下面的流程图是正确的还是我错过了什么?
更新:
感谢您的投入!这是根据您的修复程序的更新版本。但我仍然不确定一件事:如果没有明确检查IE9 +是否被使用,如果它不是IE并且不支持SSE,是什么触发从ForeverFrame到LP的回退?
答案 0 :(得分:8)
首先关闭令人敬畏的图表。
非常接近!以下是一些修复:
Configured JSONP
Yes -> Use LP
No -> IsCrossDomain
Yes -> CORS Support?
No -> JSONP = true
-> Use LP
Yes -> Server Supports WebSockets
Yes -> Client Supports WebSockets
Yes -> Use WebSockets
No -> Use LP
No -> Use LP
No -> Use LP
另一个细节:ForeverFrame总是在SSE之前尝试(即使在Chrome中),但在传输本身内它检查是否存在EventSource(SSE的基础方法),如果它存在则永远帧无法启动(所以它可以回归到SSE)。因此,IE9 +绝不是直接检查。
实施我的修补程序后,您的图表就会准确无误。