Клиенты ломаются при обновлении версии libwebsockets - PullRequest
0 голосов
/ 22 января 2019

Вот уже около шести месяцев я управляю серией libwebsockets клиентов, которые подключаются к различным сервисам. Все работает относительно гладко.

Я выполняю libwebsockets на коммите git в строке 2.x между официальными выпусками: afafc13.

Следующая настройка более или менее соответствует спецификациям для различных сервисов и работает с моей сборкой libwebsockets v2.x:

struct lws_client_connect_info i
bzero(&i, sizeof (struct lws_client_connect_info));
i.protocol = "wss";
i.address = "ws.myservice.com
i.host = i.address;
i.port = 443;
i.path = "/";
i.ssl_connection = LCCSCF_ALLOW_SELFSIGNED;
i.protocol = protocols[0].name;

Однако, когда я строю на ветке v3.1-stable libwebsockets, никто из моих клиентов не подключается к его сервису, всегда ссылаясь на ошибку HTTP «upgrade»:

LLL_WARN: lws_client_handshake: got bad HTTP response '400'
LLL_INFO: closing connection (prot MyClient) due to bail2 connection error: HS: ws upgrade response not 101

Когда я меняю номер порта на 80

i.port = 80;

затем некоторые моих клиентов подключаются, по-видимому, успешно "обновляя" HTTP-соединение до WS. Но другие не подключаются, и сообщение об ошибке не выдается.

Ни в коем случае я не могу использовать сборку 3.1-stable libwebsockets для подключения к службе с использованием моей существующей настройки lws_client_connect_info, и во всех случаях эта существующая установка соответствует различным спецификациям, указанным соответствующими службами.

Я не знаком со стандартом WebSockets, и поэтому вполне возможно, что мне не хватает чего-то технического. Но все же кажется, что я должен быть в состоянии подключиться к службе, используя ее заданную конфигурацию и любую недавнюю сборку libwebsockets.

Что мне не хватает?

...