首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libwebsockets:如何关闭连接

libwebsockets:如何关闭连接
EN

Stack Overflow用户
提问于 2013-07-01 11:49:05
回答 2查看 5.4K关注 0票数 5

我使用libwebsockets同时运行websocket服务器和客户端(实际上是在同一个可执行文件中)。有什么方法能优雅地关闭连接吗?

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-01 08:57:04

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

以前的测试代码使用它来关闭连接。

代码语言:javascript
复制
if (mirror_lifetime == 0) {
    fprintf(stderr, "closing mirror session\n");
    libwebsocket_close_and_free_session(context,
        wsi_mirror, LWS_CLOSE_STATUS_GOINGAWAY);

但是,新的测试代码使用的是返回-1方法,所以我假设这是打算使用的优雅方法。

代码语言:javascript
复制
mirror_lifetime--;
if (!mirror_lifetime) {
    fprintf(stderr, "closing mirror session\n");
    return -1;
}

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

票数 5
EN

Stack Overflow用户

发布于 2022-02-03 22:44:14

我想您是在寻找一个函数超时( wsi,原因,超时)

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17403806

复制
相关文章

相似问题

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