我想要创建一个web应用程序,当C++后端有新的东西时,一组用户可以异步地接收一些数据。因此,理想情况下,当一个新用户出现时,他将被添加到订阅者列表中,每当C++后端为该组提供新数据时,它就会将其发布给每个人。
libwebsockets似乎是用于C++的一个很好的库。唯一的问题是,它似乎主要是在回调系统上设计的,因此,显然只有在客户端要求时才会发送数据。
我发现这篇文章也有类似的问题,但我不知道这是否是最好的方法:如何通过libwebsocket发送异步数据?
任何帮助都将不胜感激。谢谢。
发布于 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协议)。
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;
...
}
}https://stackoverflow.com/questions/23292396
复制相似问题