2012-10-04 8 views
8

각 키 스트로크가 (DB에 저장되어있는) 서버로 보내지고 모든 클라이언트에 전달 된 채팅 앱에 대해 SignalR (0.5.3) 허브를 사용하고 있습니다. 정렬의 문자열 토큰)이 서버에서 다시 전송됩니다.응용 프로그램 풀에서 SignalR 연결 처리 재활용

메모리 풀 상태가 상실되어 서버가 모든 값을 반환하지 않기 때문에 앱 풀이 재생 될 때까지 정상적으로 작동하여 모든 클라이언트에 키 입력을 중계하지 않습니다. 이 시점에서, 나는 SignalR을 통한 모든 요청이 IIS에 의해 큐에 저장되고 응용 프로그램 풀이 재활용되면 처리 될 것이라고 가정합니다.

제 질문은이 시나리오를 어떻게 처리하여 모든 클라이언트가 응용 프로그램 풀 재활용로 인한 서버 비 가용성/지연을인지하고 사용자에게 잠시 기다린 다음 다시 연결하면 작업을 재개하도록 알릴 수 있습니까?

답변

4

두 가지 옵션이 있습니다.

0.5.3의 경우 클라이언트가 "다시 연결"되거나 "연결이 끊어지는 경우"를 감지하고 사용자에게 서버 문제가 있음을 알릴 수 있습니다. 대부분의 상황에서 클라이언트는 서버가 사라지면 클라이언트가 실제로 연결이 끊어 졌다는 것을 실제로 알 수 없습니다.

또는

당신이 다음 릴리스 (1.0alpha) 우리는 당신이 대량의 처리됩니다 기다리십시오

. 서버가 없으면 onConnectionSlow 이벤트를 발생시켜 클라이언트가 다시 온라인 상태가 될 때까지 클라이언트가 "다시 연결"상태 (정보를받지 못하면)로 바뀌게합니다. 또한 클라이언트는 응용 프로그램 풀 재활용과 같은 최첨단의 경우 서버가 사라지는 지 (이 기능을 추가 할 것인지) 알 수 있습니다.

희망이 도움이됩니다.

+0

옵션 1 : 맞습니다. 클라이언트는 지연 시간이 초과 된 후에 만 ​​연결 끊김을 알게되므로 재 연결/연결 끊김 이벤트를 통한 처리가 작동하지 않을 수는 있지만 계속해서 연결해줍니다. – Nick

+0

@Taylor Mullen - 안녕하세요, 저는 이것이 signalr 서버가 없어지면 0.5.3에서 클라이언트가 시간 제한까지 다시 연결을 시도 할 수 있다는 것을 의미한다고 생각합니다. 그리고 클라이언트 측에 이벤트가 없습니다. 이 순간을 감지하는 데 사용됩니까? 건배 – Will

+0

@ 부분적으로 정확한 것입니다. 0.5.3에서는 "nowReconnecting"과 같은 특정 이벤트를 수신하지 않지만 SignalR이 stateChanged 이벤트를 통해 재 연결을 시도하고 있음을 감지 할 수 있습니다. 재 연결 상태가되면 stateChanged 이벤트가 발생하고 새 연결 상태가 다시 연결됩니다. 또한 클라이언트에는 시간 종료가 없으며 영원히 다시 연결을 시도합니다. –

관련 문제