c-libwebsockets:如何关闭连接



我使用libwebsocket来运行websocket服务器和客户端(实际上是在同一个可执行文件中)。有没有一种方法可以优雅地关闭连接?

我知道我可以在回调函数中返回一个负int来中止连接,但这更像是在错误中发生的事情。在一些随机博客上的示例代码中,我发现了对函数libwebsocket_close_and_free_session的引用,但该函数在库代码中已经不存在了。

理想情况下,我希望能够从回调处理程序中关闭一个与被调用的连接不同的连接(即解释类似"关闭另一个连接"的命令)。

在先前版本的libwebsockets中,公共API具有libwebsocket_close_and_free_session函数。

以前的测试代码使用它来关闭连接,例如

if (mirror_lifetime == 0) {
    fprintf(stderr, "closing mirror sessionn");
    libwebsocket_close_and_free_session(context,
        wsi_mirror, LWS_CLOSE_STATUS_GOINGAWAY);

但是新的测试代码使用了return-1方法,所以我认为这是想要的优雅方法

mirror_lifetime--;
if (!mirror_lifetime) {
    fprintf(stderr, "closing mirror sessionn");
    return -1;
}

该函数仍然存在于库代码中,但它现在位于private-libwebsocket.h文件中。我不确定你是否可以从代码中访问它(或者应该访问它)。如果可以的话,这将是一个完美的API,因为只要你有他们的struct libwebsocket *wsi指针,你就可以关闭其他连接。

我想您正在寻找一个函数lws_set_timeout(wsi,reason,timeout)。

超时也可以是LWS_TO_KILL_SYNC,用于立即关闭会话。

相关内容

  • 没有找到相关文章

最新更新