Размер Websocket & MTU - с некоторых машин linux я не могу получать большие пакеты на Azure ASP NET Базовый сервер веб-сокетов - PullRequest
0 голосов
/ 22 января 2020

У меня ASP NET Главный сервер в Azure с использованием веб-сокетов (перенесен с ASP NET, который использовал Microsoft.WebSockets и имел ту же проблему). Все в порядке для сотен клиентов - 99,5% из них - мобильные приложения и linux машины. Но, как 1 из 200 клиентов, не могли отправлять пакеты размером более 1016 байт. Даже не простое эхо.

На linux машинах MTU по умолчанию обычно 1420, когда я уменьшаю его до 1280 или меньше, все работает нормально даже на этих машинах. Но когда я пытаюсь использовать echo как echo для серверов типа wss: //demos.kaazing.com/echo или wss: //echo.websocket.org, все работает нормально, даже с MTU 1420.

Я посылаю двоичный файл данные через веб-сокеты.

Когда я пытался отладить его на Azure, соединение на сервере нормально открывалось, но при получении пакета данных websocket размером больше 1016 байт (вероятно, больше, чем в фрейме ws). ReceiveAsyn c зависает в течение нескольких десятков секунд, а затем заканчивается исключение о закрытом соединении.

В качестве клиентских библиотек я пробовал ClientWebSocket и websocket-sharp библиотеку с тем же результатом. Я использую MONO (протестировано с 3.2.8, 5.10,5.12, 5.14, 6.6) на этих машинах.

Я могу обойти эти проблемные установки c, установив меньший MTU, другие тысячи работают нормально, но почему подключение к моему серверу может быть только одна проблема c?

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