繁体   English   中英

高速公路:捕获sendMessage错误

[英]Autobahn: catch sendMessage error

如何捕获sendMessage错误? 没有异常传播。 当服务器关闭(半开放连接)时,我想在我的客户端代码中捕获该错误。 如果运行websocket守护程序的服务器崩溃,重新启动,失去网络连接,则closeConnection / ConnectionLost / ConnectionFailed回调不起作用。

from autobahn.websocket import WebSocketClientProtocol

class ClientProtocol(WebSocketClientProtocol):
    def onOpen(self):
        def heartbeat():
            self.sendMessage("HB")
            self.factory.reactor.callLater(1, heartbeat)

        # I want to catch a socket error   
        try:
            heartbeat()
        except Exception as e:  
            print e

也许有比这更好的解决方案。 乒乓 ? 简而言之,我找不到我的客户端可以检测到服务器崩溃/重新启动然后重新连接的方式。

我正在使用高速公路0.6.5

是的,有一个更好的解决方案可以快速检测丢失的连接:WebSocket ping / pong。 这是内置于WebSocket协议中的。

AutobahnPython支持自动WebSocket Ping / Pong ,主要用于此情况(快速连接丢失检测和连接保持活动)。

您可以使用以下参数激活它:

  • autoPingInterval
  • autoPingTimeout
  • autoPingSize

可以同时为服务器客户端设置

您将需要一个最新的AutobahnPython版本(我认为是0.9.4+)。 您的(0.6.5)没有该功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM