libwebsockets 是不是提供发布/订阅?
Posted
技术标签:
【中文标题】libwebsockets 是不是提供发布/订阅?【英文标题】:Does libwebsockets offer publish/subscribe?libwebsockets 是否提供发布/订阅? 【发布时间】:2014-04-25 11:54:35 【问题描述】:我想创建一个 Web 应用程序,当 C++ 后端有新内容时,一组用户可以异步接收一些数据。因此,理想情况下,当一个新用户到来时,他将被添加到订阅者列表中,并且只要 C++ 后端有该组的新数据,它就会将其发布给每个人。
libwebsockets 似乎是一个与 C++ 一起使用的好库。唯一的问题是它似乎主要是在回调系统上设计的,所以,显然数据只有在客户端请求时才发送。
我发现这篇文章有类似的问题,但我不知道这是否是最好的方法:How do I send async data via libwebsocket?
任何帮助将不胜感激。 谢谢。
【问题讨论】:
【参考方案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;
...
【讨论】:
以上是关于libwebsockets 是不是提供发布/订阅?的主要内容,如果未能解决你的问题,请参考以下文章