首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Autobahn:捕获sendMessage错误

Autobahn:捕获sendMessage错误
EN

Stack Overflow用户
提问于 2015-01-07 08:00:24
回答 1查看 687关注 0票数 0

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

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-07 18:40:15

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

AutobahnPython支持自动WebSocket乒乓,主要用于此场景(快速连接丢失检测和连接保持活动)。

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

  • autoPingInterval
  • autoPingTimeout
  • autoPingSize

可以为服务器客户端设置。

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

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

https://stackoverflow.com/questions/27814828

复制
相关文章

相似问题

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