django 频道如何知道客户端已断开连接?

Posted

技术标签:

【中文标题】django 频道如何知道客户端已断开连接?【英文标题】:how does django channels knows that a client has disconnected? 【发布时间】:2019-08-02 19:52:37 【问题描述】:

我担心客户端会突然断开连接并断开连接,而不会向后端留下任何信息。如果发生这种情况,套接字会保持活动状态吗?

【问题讨论】:

iirc 它使用“保持活动消息”。如果客户端没有响应,最终连接被关闭。 【参考方案1】:

我在 django 频道存储库的问题中找到了答案:

使用 websocket 自动 ping 定期断言客户端仍然连接到套接字,如果没有,则将它们断开。如果您想尝试,这是 daphne master 中已有的功能,并且将在下一个版本中提供; ping 间隔和 time-till-considered-dead 都是可配置的。这解决了(更常见的)客户端断开连接不干净的问题。

将来自客户端的最后一次看到的操作的时间戳存储在数据库中,然后修剪您有一段时间没有听说过的操作。这是唯一一种也会因为 Daphne 服务器被杀死而导致不发送断开连接的方法,但它更专业,因此 Channels 无法直接实现它。

Link to the issue on github

【讨论】:

以上是关于django 频道如何知道客户端已断开连接?的主要内容,如果未能解决你的问题,请参考以下文章

如何用C语言检测网络是不是连接上、已连接、已断开状态

远程桌面连接已断开 客户端无法连接。您已连接到这台计算机的控制台。无法建立新的控制台会话。

命名管道:服务器端如何知道客户端已断开连接?

如何检测用户是不是因网络断开而离开凤凰频道?

谷歌应用引擎:如何向连接/断开通道“ping”添加信息?

如果已断开连接的客户端已重新连接,Python3就会知道