Использование вызова / signalr / ping при использовании длинного опроса

Я использую длинный опрос с SignalR. Я обнаружил, что сеанс пользователя заканчивается (ASP.NET session_end вызывается) сразу после того, как веб-страница на основе singalr делает / signar / ping запрос (как показано ниже). Я прошел через это.http://www.asp.net/signalr/overview/signalr-20/hubs-api/handling-connection-lifetime-events но не смог найти четкие ответы на следующие вопросы.

  1. как сохранить ASP.net сеанс пользователя alive из a веб-страница клиента signalr?
  2. какова фактическая цель /ping?
  3. время для этого / ping вызова настраивается?

1 ответов


вся цель запроса / signalr/ping состоит в том, чтобы сохранить ASP.NET сеансы живые. Делая запросы на регулярном интервале короче тайм-аута сеанса, сеанс никогда не должен истекать, так как сервер должен сбросить тайм-аут для каждого запроса.

в случае длительного опроса транспорта, это, вероятно, не нужно, так как SignalR заставит новый длинный опрос по крайней мере каждые 110 секунд, используя настройки по умолчанию. Тем не менее, SignalR сделает пинг запрос каждые 5 минут по умолчанию независимо от того, какой транспорт используется. Этот 5-минутный интервал достаточно мал, чтобы иметь дело с ASP.NET по умолчанию 20-минутный тайм-аут сеанса.

вы можете изменить 5-минутный интервал ping на пользовательское значение в вашем вызове на $.connection.hub.start вот так:

// Configure SignalR to ping the server every minute
$.connection.hub.start({ pingInterval: 60000 })//...

по умолчанию pingInterval 300000 миллисекунд (5 минут). Вы можете отключить ping, установив pingInterval до null.