1

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

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

我发现这篇文章有类似的问题,但我不知道这是否是最好的方法:如何通过 libwebsocket 发送异步数据?

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

4

1 回答 1

1

找到了!libwebsockets 允许您向所有连接的用户广播到特定协议,使用该协议的回调函数将处理libwebsocket_callback_on_writable_all_protocol(*protocol)触发器,并且我们可以发送数据。LWS_CALLBACK_SERVER_WRITEABLE

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

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;
    ...
    }
}
于 2014-04-30T08:04:33.103 回答