Веб-приложение Azure: веб-сокеты прерываются через 100 секунд
Я пишу приложение для веб-сокетов, которое собираюсь разместить в облаке с помощью веб-приложения Azure.
Веб-сокет реализован с использованием довольно стандартного компонента промежуточного программного обеспечения Owin и полностью функционирует в течение первых 100 секунд. По истечении этого времени веб-розетка, похоже, переходит в прерванное состояние, как по маслу.
[CLIENT][06/04/2018 11:27:21] WS client connected
[CLIENT][06/04/2018 11:29:01] WS client disconnected
Попытка сделать это на экземпляре IIS Express приводит к той же проблеме, хотя задержка, кажется, составляет 90 секунд, а не 100 (это также согласуется).
Запуск одного и того же веб-сокета в составе приложения для автономного хоста Owin обеспечивает стабильность более 25 минут - так что это определенно является проблемой, вызванной хост-сервером.
На хостинге веб-приложений Azure я включил веб-сокеты, а также попытался включить функцию "Всегда включено" в надежде, что это предотвратит проблему, не позволив серверу перейти в режим ожидания, но это не помогло.
Существуют ли какие-либо параметры лазури, о которых я не знаю, которые можно настроить так, чтобы эти веб-сокеты оставались открытыми в течение более длительного периода времени?
Большое спасибо
1 ответ
К сожалению, кажется, что azure и IIS оба были "красными сельдями", вместо этого проблема была проблемой, возникающей при использовании реализации System.Net.Websockets.ClientWebSocket на C#. Подробности блестяще подытожены на: .NET WebSockets принудительно закрыты, несмотря на поддержание активности и активность соединения
Для других, сталкивающихся с этой проблемой, эффективный (но не идеальный) способ обойти это - выполнить один раз перед созданием клиентского веб-сокета:
ServicePointManager.MaxServicePointIdleTime = int.MaxValue;