【问题标题】:how to response to the server ping in tornado websocket如何响应龙卷风 websocket 中的服务器 ping
【发布时间】:2018-01-02 14:28:58
【问题描述】:


我在 tornado 中编写了一个 websocket 服务器,我使用 websocket_ping_interval=60 来检测 60 秒后哪个连接真正关闭。但 60 秒后服务器断开链接(即使它已断开)。我认为这是因为服务器每 60 秒发送一个 ping 数据包,而客户端没有响应服务器。我希望客户端(用websocket python 模块编写)在服务器发送 ping req 时响应服务器。
我对浏览器中的客户端 websocket 有同样的问题。知道怎么解决吗?

【问题讨论】:

    标签: python websocket tornado


    【解决方案1】:

    Tornado 的 websocket 实现会自动处理 ping(大多数其他实现也是如此)。你不应该做任何事情。

    Tornado 的 ping 超时默认为 ping 间隔的 3 倍,因此,如果您在 60 秒而不是 180 秒后被切断,则说明是其他原因造成的。一些代理对空闲连接有 60 秒的超时,因此如果您正在经历其中一个,您可能需要更短的 ping 间隔。

    如果不是这样,您需要提供更多详细信息,最好是包含客户端和服务器代码的可重现测试设置。

    【讨论】:

    • 我不使用代理。假设我建立了 60000 个连接。服务器告诉我已经建立了 60000 个连接,但是当我从客户端全部关闭它们时,似乎 on_close 没有被触发 60000 次(似乎服务器无法检测到某些关闭的连接)。我在连接计算中犯了一个错误。但是当我在 200 秒后使用 ping 设置(假设间隔 = 200 秒)时,on_close 将被精确调用 60000 次,一切都会好起来的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    • 2012-08-29
    相关资源
    最近更新 更多