2013-06-07 3 views
13

SignalR은 실시간 연결에 사용되는 전송에 대한 추상화입니다. 다양한 요소에 따라 어떤 전송 방법을 사용해야 하는지를 정확히 결정하는 방법을 알고 싶습니다. 사용 가능한 문서를 사용하여 몇 가지 조사를하고 출처를 살펴본 후 어떻게 작동하는지 생각해 냈습니다.SignalR은 사용할 전송 방법을 어떻게 결정합니까?

내 실제 질문은 다음과 같은 순서도가 맞지 않거나 무엇이 누락 되었습니까?

Flowchart of SignalR's assumed transport negotiating

업데이트 : 귀하의 의견

감사합니다! 수정 사항에 따라 업데이트 된 버전이 있습니다. IE9 +가 사용되는지 여부를 명시 적으로 확인하지 않으면 IE가 아니고 SSE를 지원하지 않는 경우 ForeverFrame에서 LP로 폴백을 트리거하는 것은 무엇입니까? 우선

enter image description here

+1

편집을 처리하려면 다음과 같은 사용 사례가 실패 할 것으로 예상됩니다. 즉, 연결이 제대로 시작되지 않으므로 longpolling으로 대체됩니다. –

+0

문서 : http://www.asp.net/signalr/overview/getting -started/introduction-to-signalr # transports – Nogwater

답변

7

편집 도면.

매우 가깝습니다. 여기에 몇 가지 수정 사항입니다 :

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 전에 시도 되나 EventSource (SSE의 기본이되는 메소드)이 존재하는 경우는 다음 존재하는 경우 전송 자체 내에서 그것은 확인 영원히 프레임이 시작되지 않습니다 (그래서 SSE로 되돌아 갈 수 있습니다). 따라서 IE9 +는 절대로 직접 확인하지 않습니다.

내 수정 프로그램을 적용하면 다이어그램이 정확해질 것입니다.

관련 문제