우리는 속성을 다른 시간을 지정이 링크를 통해 왔습니다. SignalR 시간 초과 속성
그냥 위의 포스트에서 서로 다른 상황을 다시 반복 : 클라이언트가 오프라인 뒤 잠시 후 연결을 회복 갈 때는 "A 허브 재 연결이 발생 SignalR 구성 값이 크게 때문에 다음 예제의 타임 스탬프를 결정합니다. 그대로 시간을 고려하지 않는
을 여기에 몇 가지 예와 그 결과 (시간 형식 m : SS)입니다. 다시 연결 동작을 포함 :
상황을 1
0시 0 - 클라이언트 연결
을 차릴 - 클라이언트 인해 ISP 문제로 연결이 끊어 (그리고 연결이 끊어 실현)0시 15분를 - 클라이언트, OnConnected이
0시 10분
을 트리거 서버에 연결0:16 - OnReconnected 이벤트가
상황이
0:00 트리거 - 클라이언트는 서버, OnConn에 연결 클라이언트 연결을
두 가지가 여기에 일어날 수 을 차릴 - 클라이언트 인해 이더넷 케이블 (이 끊어있어 실현하지 않습니다)0시 15분를 당기에 연결이 끊어진 - 반사 된이
0시 10분
를 트리거A : 0시 16분는 - 아무런 반응이 없습니다 및 클라이언트가 이전 연결
B에 계속 : 0 ~ 45 - 클라이언트가 분리를 실현 *
,B : 0:46 - 클라이언트가 다시 연결 상태가됩니다.
B : 0:47 - 클라이언트가 성공적으로 다시 연결되고 OnReconnected 이벤트가 트리거됩니다.
상황 3
0:00 - 클라이언트가 서버에 연결, OnConnected이
0시 10분
을 트리거 - 클라이언트 인해 이더넷 케이블을 당기에 연결이 끊어 (이 분리의 실현하지 않습니다)0 ~ 45 일 - 다시 연결 상태
0으로 클라이언트 전환 - 클라이언트의 연결이 끊어 *0:46을 실현
1시 15분은 - 서버는 클라이언트가 너무 오래 간 후 약간 나중에 다시 연결하면 수신하는 클라이언트의 "분리"명령을 대기 그것에 대해 잊어 된 것으로 판단한다. ***
1시 15분 - OnDisconnect의 1시 16분 트리거 - 클라이언트가 수행하는 "소프트"(OnReconnected 트리거되지 않습니다) 다시 연결
1시 18분 - 클라이언트 연결
1시 17분 회복 - 클라이언트
1:19 "연결 해제"명령 검색 - 클라이언트가 "중지"를 호출하고 부드러운 분리가 (OnDisconnected 트리거되지 않습니다) 않는에게
상황을 4
클라이언트는 실현 - ~ 45 :0시 6,이 - - 클라이언트, OnConnected이
0시 10분
을 트리거 서버에 연결 클라이언트 인해 이더넷 케이블을 당기에 연결이 끊어0 (이 분리의 실현하지 않습니다) 그 *
0:46 분리 - 다시 연결 상태
1:15에 클라이언트 전환은 - 서버는 클라이언트가 너무 오래 간되었다는 것을 결정하고 다음의 "분리"명령을 대기 그것에 대해 잊어 클라이언트가 재 연결되면 수신 할 클라이언트 나중에. ***
1시 15분 - OnDisconnect의 1시 반 트리거 - 클라이언트 ** (너무 오래 노력)
1시 반 다시 연결 시도를 중지 - 연결이 끊긴 상태로 클라이언트 전환을
- 클라이언트 측 keep alive check로 인해 : keep alives가 없기 때문에 클라이언트가 오프라인 상태 일 때를 결정하는 데 사용됩니다. 긴 폴링 전송에 사용되지 않음
** 클라이언트 측 연결 끊기 시간 초과로 인해 : 클라이언트가 너무 오랫동안 다시 연결되었을 때를 결정하는 데 사용되며 서버가 해당 시간 동안 클라이언트를 잊어 버렸을 가능성이 있습니다
*** 서버 연결 끊김 시간 초과로 인해 : 클라이언트를 잊어 버릴 때를 결정하는 데 사용됩니다. 서버에서 연결이 죽은 것으로 태그 지정되면 시간이 시작됩니다. 궁극적으로 서버는 클라이언트에게 새로운 연결을 시작해야한다는 것을 알려주는 클라이언트의 주제에 대한 연결 해제 명령을 대기열에 넣습니다 (다시 연결하는 경우). 항목이 정리되면 명령이 서버에서 사라집니다."
것은 우리가 찾는 것은 우리가 연결 해제를 얻을이며 .NET SignalR 클라이언트와 ASP.NET MVC SignalR 서버 사이 (위의 1과 2) 자주 다시 연결하고, 또한 초래하지 않는 연결이 끊어 . 재 연결 (3 위 4) 우리는 ServerSentEvents 프로토콜이 사용되고 있음을 알 수
우리가 (증가 또는 감소) 조정할 필요 시간 제한 속성을 알고 하드입니다. 수를 줄
- 을 연결을 끊고 다시 연결하십시오.
- 상황 3과 4에서 전혀 끝나지 않습니다.
여기서 중요한 점은 .NET SignalR Client는 실제로 서버에 항상 연결되어있는 Windows 서비스입니다. 우리가 사용하는
- 은 ConnectionTimeout = 1백10초
- DisconnectTimeout = 30초
- KeepAlive를 = 30초 또한
:
우리는 현재 단지있는 기본값을 유지 한 SignalR 1.0.1.
감사합니다.이것은 우리에게 어떤 것을 제공합니다. 추신. 내가 클라이언트 측 Keep Alive가 연결 해제에 도움이된다는 것을 확인하자마자 응답으로 표시 할 것입니다. – smitra
하하는 모두 도움이되기를 기쁘게 생각합니다. =) –
안녕하세요, 다시 dev 브랜치에 .NET 클라이언트 측 KeepAlive를 찾을 수 없습니다. 그것은 Connection 클래스의 속성처럼 보이지 않습니다. 내가 찾을 수있는 가장 가까운 KeepAliveData IConnection 인터페이스에서 시간 제한 속성이 있습니다. 이게 우리가 말하는 거라고 생각하니? – smitra