Долгосрочный транспорт SignalR

Я использую SignalR 0.5.3 с концентраторами, и я четко устанавливаю транспорт для длительного опроса следующим образом:

$.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 находятся здесь. Ответ от первого запрошенного запроса:

{"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}}

Буду признателен за любую помощь в решении этой проблемы. Благодарю.

редактировать

Если reconnect означает начало нового цикла длинных опросов, почему он запускается через ~ 2 минуты, когда параметр KeepAlive в global.asax.cs установлен на 15 секунд? Проблема в том, что у меня есть обратный прокси-сервер перед IIS, который тайм-аут продолжает поддерживать запросы через 25 секунд, поэтому я получаю ответ 504, когда этот тайм-аут обратного прокси-сервера достигнут.

+1
источник поделиться
1 ответ

Взгляните на этот пост: Как signalr работает внутри. Путем длительных вытягиваний работает по истечении установленного времени, когда соединение будет тайм-аутом или получить ответ и отменить (повторно подключиться)

+4
источник

Посмотрите другие вопросы по меткам или Задайте вопрос