gpt4 book ai didi

c++ - libwebsockets 是否提供发布/订阅?

转载 作者:太空宇宙 更新时间:2023-11-04 11:34:51 26 4
gpt4 key购买 nike

我想创建一个 Web 应用程序,只要 C++ 后端有新内容,一组用户就可以异步接收一些数据。因此,理想情况下,当新用户到来时,他将被添加到订阅者列表中,并且每当 C++ 后端有该组的新数据时,它就会将其发布给所有人。

libwebsockets似乎是与 C++ 一起使用的好库。唯一的问题是它似乎主要是在回调系统上设计的,因此,显然只有在客户端请求时才发送数据。

我发现这篇文章有类似的问题,但我不知道这是否是最好的方法:How do I send async data via libwebsocket?

任何帮助将不胜感激。谢谢。

最佳答案

找到了!libwebsockets 允许您使用 libwebsocket_callback_on_writable_all_protocol(*protocol) 向所有连接的用户广播特定协议(protocol),这会触发 LWS_CALLBACK_SERVER_WRITEABLE,它将由协议(protocol)的回调函数处理,这就是我们可以发送的地方数据。

因此,通常情况下,每当我有一些数据要在代码的任何部分使用 libwebsocket_callback_on_writable_all_protocol(protocols + 1) 广播时,我都会使用第二个协议(protocol)(非 http 协议(protocol)),并且在协议(protocol)的回调函数

static int callback_linux_shell(struct libwebsocket_context * context, struct libwebsocket *wsi, enum libwebsocket_callback_reasons reason, void *user, void *in, size_t len) {
switch (reason) {
...
case LWS_CALLBACK_SERVER_WRITEABLE:
libwebsocket_write(wsi, my_data, my_data_size, LWS_WRITE_TEXT);
break;
...
}
}

关于c++ - libwebsockets 是否提供发布/订阅?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23292396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com