2012-10-20 4 views
1

나는 허브와 SignalR 0.5.3을 사용하고 내가 명시 적으로 다음과 같이 긴 폴링 전송을 설정하고있어이 같은 구성SignalR 롱 폴링 전송

$.connection.hub.start({ transport: 'longPolling' }, function() { 
    console.log('connected'); 
}); 

(global.asax.cs 위해 Application_Start 방법) :

GlobalHost.DependencyResolver.UseRedis(server, port, password, pubsubDB, "FooBar"); 
GlobalHost.Configuration.DisconnectTimeout = TimeSpan.FromSeconds(2); 
GlobalHost.Configuration.KeepAlive = TimeSpan.FromSeconds(15); 

그러나 긴 폴링은 개발 (IIS express) 환경이나 프로덕션 (IIS 7.5) 환경에서는 작동하지 않는 것 같습니다. 연결이 제대로 이루어진 것처럼 보이지만 긴 폴링 요청은 항상 시간 초과되어 (~ 2 분 후) 다시 연결됩니다. IIS의 로그는 here입니다.

{"MessageId":"3636","Messages":[],"Disconnect":false,"TimedOut":true,"TransportData":{"Groups":["NotificationHub.56DDB6692001Ex"],"LongPollDelay":0}} 

시간이 초과 재 연결 응답은 다음과 같습니다 :

{"MessageId":"3641","Messages":[],"Disconnect":false,"TimedOut":true,"TransportData":{"Groups":["NotificationHub.56DDB6692001Ex"],"LongPollDelay":0}} 

나는이 문제에 관한 도움을 주셔서 감사합니다 것 처음부터 응답 요청을 시간이 초과되었습니다. 감사.

편집 global.asax.cs에서 KeepAlive를 설정 15 초로 설정 한 경우가 1 ~ 2 분 시작되는 이유를 다시 연결하고 새로운 긴 폴주기의 시작을 의미하는 경우

? 이 문제는 내가 25 초 후 keep-alive 요청을 시간 초과하는 IIS 앞에 역방향 프록시가 있기 때문에이 역방향 프록시 시간 초과에 도달하면 504 응답을 얻게된다는 것입니다.

+0

설명하는 문제가 확실하지 않습니다. 시간 초과는 응답을 얻지 못했을 때 발생하며 완전히 설계된 것입니다. 그게 무슨 문제 야? – davidfowl

+0

@dfowler : 재 연결은 새로운 긴 폴링주기의 시작을 의미합니까? KeepAlive 설정을 15 초로 설정 한 후 ~ 2 분 후에 시간 초과가 발생하는 이유는 무엇입니까? 업데이트 된 질문보기 – yojimbo87

+0

계속 살아있는 것은 longpolling에 대해 작동하지 않습니다 (의미가 없습니다). LongPolling은 기본적으로 2 분 동안 대기하며 사용자 환경에서 작동하는 것으로 확장 할 수 있습니다. 나는 아직도 문제를 이해하지 못하고있다. 어떻게 작동하는지 묻는거야? – davidfowl

답변

4

이 게시물을보십시오 : How signalr works internally. 길게 당기는 방식은 일정 시간이 지나면 연결 시간이 초과되거나 응답을 받고 다시 연결 (다시 연결)합니다.

+0

링크 주셔서 감사합니다. 업데이트 된 질문보기 – yojimbo87