Протокол Chrome Dev Tools - Chrome уничтожает веб-сокет после 30 секунд бездействия - PullRequest
0 голосов
/ 22 ноября 2018

Я подключаюсь к Chrome Dev Tools из моего приложения C # / .NET по протоколу Chrome Dev Tools, работающему на WebSocket.Я обнаружил, что если в течение 30 секунд не было отправлено / получено сообщение, Chrome разрывает соединение, и я получаю следующее исключение WebSocketException:

System.Net.WebSockets.WebSocketException:
The remote party closed the WebSocket connection without completing the close handshake.

Есть ли какой-нибудь способ не позволить Chrome уничтожить соединение?Какой-нибудь изящный способ сделать keep-alive без ручной отправки пустых сообщений каждые x секунд?Я использую стандартный WebSocket от System.Net.WebSockets и подключаюсь так:

var socket = new ClientWebSocket();
socket.ConnectAsync(new Uri(target.webSocketDebuggerUrl),CancellationToken.None).Wait();

Спасибо

1 Ответ

0 голосов
/ 22 ноября 2018

Стандартный .NET ClientWebSocket не поддерживает проверку связи вручную.Однако его можно установить с помощью этого свойства:

ClientWebSocket.ClientWebSocketOptions.KeepAliveInterval

Значение по умолчанию - 30 секунд, то есть то же самое время, после которого сокет закрывался.Установка этого значения на действительно высокое значение сделало проблему исчезающей.К сожалению, я до сих пор не уверен в деталях этой проблемы и как работает поддержка активности в .NET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...