首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libwebsockets提供发布/订阅吗?

libwebsockets提供发布/订阅吗?
EN

Stack Overflow用户
提问于 2014-04-25 11:54:35
回答 1查看 1K关注 0票数 1

我想要创建一个web应用程序,当C++后端有新的东西时,一组用户可以异步地接收一些数据。因此,理想情况下,当一个新用户出现时,他将被添加到订阅者列表中,每当C++后端为该组提供新数据时,它就会将其发布给每个人。

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-30 08:04:33

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

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

代码语言:javascript
复制
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;
    ...
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23292396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档