C# ClientWebSocket возвращает ошибку "The WebSocket request or response contained unsupported header(s)."

189
04 октября 2021, 20:00

написал на Unity3D тулзу для подключения к серверу по websocket, для этого использую библиотеку System.Net.WebSockets. Собрал билд под Android, закинул в плей маркет, бот там проверил оттестировал и все спокойно подключается к серверу, так же я на своем андройд планшете проверил, в эмуляторах и в самой юнити. Проблема заключается в том, что некоторые устройства (например мой смартфон) попросту не хотят подключаться по вебсокету, при попытке коннекта выдают ошибку "The WebSocket request or response contained unsupported header(s)." Что за магия такая, почему часть устройств подключается, а часть нет? Опытным путем было выяснено что проблема заключается в Uri. Я пробовал сменить библиотеку сокетов на другую где при коннекте можно использовать просто string с адресом вида "ws://127.0.0.1:28020/password" и те устройства которые не коннектились через Uri смогли приконектиться. Но мне нужно заставить библиотеку System.Net.WebSockets работать, помогите разобраться, ниже приведу код примера подключения.

ClientWebSocket socket = new ClientWebSocket();
string ip = "127.0.0.1";
string port = "28020";
string password = "myPass123";
uri = new Uri($"ws://{ip}:{port}/{password}");
await socket.ConnectAsync(uri, cancellationTokenSource.Token);
Answer 1

В моем случае, проблема была с сервером который не осуществил нормально HANDSHAKE для перехода с HTTP/1.1 на websocket.

https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers

READ ALSO
Сортировка Listbox по длине слова в C#

Сортировка Listbox по длине слова в C#

Подскажите пожалуйста, как сделать сортировку в Listbox по длине слова (по возрастанию и по убыванию)В задании так же нужно было сделать сортировку...

178
Парсинг картинок C#

Парсинг картинок C#

Есть некий парсер ссылок и информации к нимХочу чтобы и картинки к ним тоже парсились и записывались либо ссылки на них сразу в таблицу со всей...

122
Как сделать Distinct для List<T>?

Как сделать Distinct для List<T>?

Есть json, который я десериализовал в классЗагружаю в cписок List

135
Нужна естественная сортировка

Нужна естественная сортировка

А нужно чтобы все по порядку было

271