libwebsockets:如何关闭连接

时间:2013-07-01 11:49:06

标签: c websocket

我正在使用libwebsockets运行websocket服务器和客户端(实际上在同一个可执行文件中)。有没有办法优雅关闭连接?

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

理想情况下,我希望能够在回调处理程序中关闭不同的连接而不是被调用的连接(即解释像“关闭其他连接”这样的命令)。

1 个答案:

答案 0 :(得分:5)

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

之前的测试代码用于关闭连接,例如

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

但新测试代码使用了返回-1方法,所以我认为这是预期的优雅方法

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

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