У меня 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?