如何在 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 中一样,我正在实现自己的子协议(有自己的名称,自己的回调函数)。
我的问题是:
有没有办法不将特定的 websocket 子协议与 libwebsockets 一起使用?
如果没有,我是否应该实现一个现有的(客户端),如 WAMP 或此 list?(我不想重新发明轮子...)
如果没有,它是否存在一个 "default" websocket 子协议,我可以指定给 nginx 并且它可以与我的 websocket-client 兼容?(我只对我的客户端执行一些简单的 send/receive 操作。如果它只能与 libwebsockets 服务器通信,那么实现 libwebsockets 客户端似乎完全没用)
我的问题是否相关?如果不是为什么?我错过了什么?
感谢任何帮助。
谢谢!
正如与 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 上工作得很好。
我尝试实现一个 websocket 客户端(在 C 中使用 libwebsockets 但它不是一个选项)。例如,我使用了库中提供的 test-client.c。 我的 websocket-client 实际上可以与 test-server.c 一起正常工作。但是我在与 nginx 服务器通信时遇到了一些麻烦。
据我所知,handshack 的结果并不好,因为 nginx 不知道我的 websocket 客户端的子协议。 嗯,看起来,就像在 test-client.c 中一样,我正在实现自己的子协议(有自己的名称,自己的回调函数)。
我的问题是:
有没有办法不将特定的 websocket 子协议与 libwebsockets 一起使用?
如果没有,我是否应该实现一个现有的(客户端),如 WAMP 或此 list?(我不想重新发明轮子...)
如果没有,它是否存在一个 "default" websocket 子协议,我可以指定给 nginx 并且它可以与我的 websocket-client 兼容?(我只对我的客户端执行一些简单的 send/receive 操作。如果它只能与 libwebsockets 服务器通信,那么实现 libwebsockets 客户端似乎完全没用)
我的问题是否相关?如果不是为什么?我错过了什么?
感谢任何帮助。 谢谢!
正如与 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 上工作得很好。