【问题标题】:Silently closing websockets in Tornado在 Tornado 中静默关闭 websocket
【发布时间】:2016-03-11 19:30:44
【问题描述】:

我有一个超时一小时的 nginx 服务器和一个 Tornado 网络服务器。

当 nginx 关闭连接时,我在 Tornado 中对此一无所知。我看到了这个关于通过超时事件自动关闭连接的问题 (Implementing and testing WebSocket server connection timeout),我将把它用作后备解决方法。

我的问题是:Tornado 是否有内部机制使 websocket 连接失效?

【问题讨论】:

    标签: python nginx websocket tornado


    【解决方案1】:

    WebSocketHandler 有一个可覆盖的on_close 方法,应该在连接关闭时调用(大部分时间)。但是,此方法不是 100% 可靠(由于底层网络协议的限制),因此建议使用基于超时的回退。不过,Tornado 对此没有任何内置支持,因此您必须自己实现它,可能采用与您链接到的答案类似的方式。

    【讨论】:

    • 也 ping (tornadokevinlee.readthedocs.org/en/latest/…) 可以很好地实现这一点而无需超时,但以“意外关闭”感知方式
    • 其实我不确定底层网络协议的限制。即使在底层网络级别出现问题(例如服务器收到终止信号)时,浏览器的 websocket 也会收到 onClose 事件。我已经在浏览器端测试了这个案例。因此,我认为这是特定于 Tornado 的问题。
    • “服务器收到终止信号”不是网络级别的问题。尝试拔下以太网电缆。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多