Signalr 信号员如何决定使用哪种传输方式?

Signalr 信号员如何决定使用哪种传输方式?,signalr,signalr.client,Signalr,Signalr.client,信号器是用于实时连接的传输抽象。不过我还是想知道它是如何根据各种因素决定应该使用哪种运输方式的。 我使用可用的文档进行了一些研究,查找了一些资料来源,并提出了它的工作原理 所以我的实际问题是,下面的流程图是正确的还是我遗漏了什么 更新: 谢谢你的意见!以下是根据您的修复程序更新的版本。但有一件事我仍然不确定:如果没有明确检查是否使用了IE9+,如果不是IE并且不支持SSE,是什么触发了从ForeverFrame到LP的回退 首先是很棒的图表 非常接近!以下是一些修复方法: Configured

信号器是用于实时连接的传输抽象。不过我还是想知道它是如何根据各种因素决定应该使用哪种运输方式的。 我使用可用的文档进行了一些研究,查找了一些资料来源,并提出了它的工作原理

所以我的实际问题是,下面的流程图是正确的还是我遗漏了什么

更新

谢谢你的意见!以下是根据您的修复程序更新的版本。但有一件事我仍然不确定:如果没有明确检查是否使用了IE9+,如果不是IE并且不支持SSE,是什么触发了从ForeverFrame到LP的回退


首先是很棒的图表

非常接近!以下是一些修复方法:

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的基本方法)是否存在,如果存在,则forever frame无法启动(以便它可以返回到SSE)。因此,IE9+从来不是直接检查


实施我的修复后,您的图表将准确无误。

为了解决您的编辑问题:我们预计这样的用例将失败,即连接无法正常启动,因此将从文档中退回到LongPolling: