Har*_*ort 6 python twisted autobahn autobahnws crossbar
我有一个使用Twisted的Autobahn Python客户端应用程序,它连接到Crossbar.io服务器.使用ReconnectingClientFactory丢失网络连接后,客户端应用程序可以成功重新连接.客户端在连接时注册被叫方名称,以便其他应用程序可以调用它.这始终适用于初始连接.
但是,从丢失的连接恢复时,无法重新注册被叫方名称,因为仍然从先前丢失的连接注册了被叫方名称.这会导致错误'wamp.error.procedure_already_exists'.由于被叫方名称注册仍与先前丢失的连接相关联,因此我将取消注册旧的被叫方名称.
我能看到的唯一解决方案是在每个连接上生成并注册唯一的新被叫方名称,以避免与先前注册的被叫方名称冲突.
有没有更好或更简单的方法来处理这个?似乎WAMP协议允许使用注册ID从另一个连接取消注册被调用者名称,但是高速公路Python客户端库似乎不允许这样做.
我问的是错误的问题.Crossbar.io服务器应检测客户端何时断开连接并自动取消注册属于该断开连接的会话的被访问者(根据Twitter上的Tobias Oberstien:https://twitter.com/oberstet/status/642241167216746496 ).这不是高速公路客户的责任.
我的问题是我的Crossbar.io服务器没有检测到客户端网络连接突然断开时发生的客户端断开连接,因此没有发生清理.
此行为仅仅是由于Crossbar服务器的配置.之后我一直关注Crossbar网站(http://crossbar.io/docs/WebSocket-Options/)上记录的"生产设置"示例.我现在有我正在寻找的行为,从断开连接遗留下来的会话被检测到并自动清理.