如何捕获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
发布于 2015-01-07 18:40:15
是的,有一个更好的解决方案,用于快速检测丢失的连接: WebSocket ping/pong。这是内置在WebSocket协议中的。
AutobahnPython支持自动WebSocket乒乓,主要用于此场景(快速连接丢失检测和连接保持活动)。
您可以使用以下参数激活此参数:
autoPingIntervalautoPingTimeoutautoPingSize可以为服务器和客户端设置。
您将需要一个最新的AutobahnPython版本(我认为是0.9.4+)。您的(0.6.5)没有这个特性。
https://stackoverflow.com/questions/27814828
复制相似问题