如何在 libwebsockets 客户端和像 Nginx 这样的 websocket 服务器之间进行通信?

How to communicate between a libwebsockets client and a websocket server like Nginx?

我尝试实现一个 websocket 客户端(在 C 中使用 libwebsockets 但它不是一个选项)。例如,我使用了库中提供的 test-client.c。 我的 websocket-client 实际上可以与 test-server.c 一起正常工作。但是我在与 nginx 服务器通信时遇到了一些麻烦。

据我所知,handshack 的结果并不好,因为 nginx 不知道我的 websocket 客户端的子协议。 嗯,看起来,就像在 test-client.c 中一样,我正在实现自己的子协议(有自己的名称,自己的回调函数)。

我的问题是:

感谢任何帮助。 谢谢!

正如与 libwebsockets 设计者 Andy (https://github.com/warmcat/libwebsockets/issues/834) 讨论的那样,使其工作的最简单方法是不在定义 websocket sub-protocol 客户端的结构中命名 sub-protocol边 :

/* list of supported sub-protocols and callbacks */
static struct lws_protocols ws_protocols[] = {
        { NULL, ws_callback, 0, 128, },
        { NULL, NULL, 0, 0 } /* end */
};

Libwebsockets 客户端不会尝试在 header 中与 sec-websocket-protocol 协商,握手在 nginx 上工作得很好。