Использование /signalr/ping call при использовании длинного опроса
Я использую длинный опрос с SignalR. Я обнаружил, что пользовательский сеанс заканчивается (вызывается ASP.NET Session_End) сразу после того, как веб-страница на основе singalr отправляет запрос / signar / ping ( как показано на этом снимке экрана). Я прошел через http://www.asp.net/signalr/overview/signalr-20/hubs-api/handling-connection-lifetime-events но не смог найти четких ответов на следующие вопросы.
- Как сохранить сеанс пользователя ASP.net живым с веб-страницы клиента сигнализатора?
- Какова реальная цель / пинг?
- Настраивается ли время для этого вызова / пинга?
1 ответ
Основная цель запроса /signalr/ping - поддерживать сеансы ASP.NET живыми. Посылая запросы на регулярном интервале, меньшем, чем время ожидания сеанса, время сеанса никогда не должно истекать, поскольку сервер должен сбрасывать время ожидания для каждого запроса.
В случае транспорта с длинным опросом это, вероятно, не нужно, поскольку SignalR будет инициировать новый длинный опрос, по крайней мере, каждые 110 секунд с учетом конфигурации по умолчанию. Несмотря на это, SignalR будет отправлять запрос ping каждые 5 минут по умолчанию, независимо от того, какой транспорт используется. Этот 5-минутный интервал достаточно мал, чтобы соответствовать стандартному 20-минутному тайм-ауту ASP.NET.
Вы можете изменить 5-минутный интервал пинга на пользовательское значение в вашем вызове $.connection.hub.start
вот так:
// Configure SignalR to ping the server every minute
$.connection.hub.start({ pingInterval: 60000 })//...
По умолчанию pingInterval
300000 миллисекунд (5 минут). Вы можете отключить пинг, установив pingInterval
к нулю.