我有一个使用 Twisted 的 Autobahn Python 客户端应用程序,它连接到 Crossbar.io 服务器。在失去网络连接后,客户端应用程序可以使用 ReconnectingClientFactory 成功重新连接。客户端在连接时注册一个被调用者名称,以便其他应用程序可以调用它。这始终适用于初始连接。
但是,当从丢失的连接中恢复时,不能重新注册被叫名称,因为被叫名称仍然是从先前丢失的连接中注册的。这会导致错误“wamp.error.procedure_already_exists”。因为被叫名称注册仍然与先前丢失的连接相关联,所以我要取消注册旧的被叫名称。
我能看到的唯一解决方案是在每个连接上生成并注册一个唯一的新被叫方名称,以避免与之前注册的被叫方名称冲突。
有没有更好或更简单的方法来处理这个问题?似乎 WAMP 协议允许使用注册 ID 从另一个连接中取消注册被调用方名称,但 Autobahn Python 客户端库似乎不允许这样做。