我有一个使用Twisted的Autobahn Python客户端应用程序,它连接到Crossbar.io服务器。 使用ReconnectingClientFactory丢失网络连接后,客户端应用程序可以成功重新连接。 客户端在连接时注册被叫方名称,以便其他应用程序可以调用它。 这始终适用于初始连接。

但是,从丢失的连接恢复时,无法重新注册被叫方名称,因为仍然从先前丢失的连接注册了被叫方名称。 这会导致错误'wamp.error.procedure_already_exists'。 由于被叫方名称注册仍与先前丢失的连接相关联,因此我将取消注册旧的被叫方名称。

我能看到的唯一解决方案是在每个连接上生成并注册唯一的新被叫方名称,以避免与先前注册的被叫方名称冲突。

有没有更好或更简单的方法来处理这个? 似乎WAMP协议允许使用注册ID从另一个连接取消注册被调用者名称,但是高速公路Python客户端库似乎不允许这样做。

===============>>#1 票数:6 已采纳

我问的是错误的问题。 Crossbar.io服务器应检测客户端何时断开连接并自动取消注册属于该断开连接的会话的被访问者(根据Twitter上的Tobias Oberstien: https ://twitter.com/oberstet/status/642241167216746496)。 这不是高速公路客户的责任。

我的问题是我的Crossbar.io服务器没有检测到客户端网络连接突然断开时发生的客户端断开连接,因此没有发生清理。

此行为仅仅是由于Crossbar服务器的配置。 之后我一直关注Crossbar网站( http://crossbar.io/docs/WebSocket-Options/ )上记录的“生产设置”示例。 我现在有我正在寻找的行为,从断开连接遗留下来的会话被检测到并自动清理。

  ask by Harold Short translate from so

未解决问题?本站智能推荐:

4回复

使用tac文件使用twistd运行时的高速公路websocket问题

我有一个使用autobahn WebSocket框架使用twisted实现的WebSocket服务器。 当程序使用python运行时,WebSocket服务器运行正常。 但是,如果我通过创建tac文件作为扭曲服务使用twistd服务器运行程序运行它,我在服务器中得到以下错误,而任何客户端尝试
1回复

所有HTTP标头键在Autobahn websocket服务器的ConnectionRequest.headers中均以小写形式出现

为什么高速公路Web套接字服务器将所有http标头密钥更改为小写? 我需要在OAuth2标准的标头中实现身份验证令牌,并使用自定义标头'Authorization:Bearer $ token'。 但是从WebSocketServerProtocol类的onConnect方法中的autoba
1回复

与crossbar.io的连接挂起或断开

我正在尝试使用具有autobahn [Twisted]的Python连接到远程主机上的交叉开关 我正在使用来自PubSub的修改后的示例代码: 我有一个crossbar实例在我的本地主机上运行以进行测试,当我访问它时,一切正常。 但是,如果我尝试连接到其他主机,则会发生两件
1回复

如何在AutobahnPython中从ApplicationRunner获得反应堆

我有一个高速公路客户端,该客户端使用来自高速公路的ApplicationRunner类连接到WAMP路由器(交叉开关)。 在主要部分中,将我的ApplicationSession类“ REScheduler”附加如下: 现在,我还需要应用程序运行程序为其他目的启动的反应堆。 例如,例
1回复

脚本完成后,AutobahnPython + Twisted'Publish'将泛洪消息

我有一个Python脚本,有时会运行一个持续约5-60秒的进程。 在这段时间内, 将忽略对session.publish()十次调用, 直到脚本完成为止。 脚本完成后,所有十条消息都会大量泛滥发布。 我通过在调试模式下打开Crossbar.io路由器来证实了这一点,它在时间结束后显示了
2回复

Crossbar.io:如何使用Django服务发布有关主题的消息?

我刚刚开始使用Crossbar.io来实现实时统计页面。 我看了很多代码示例,但是我不知道该怎么做: 我有一个Django服务(为避免混淆,您可以假设我在views.py中谈论一个函数),并且我希望它可以在调用特定主题时发布消息。 我已经看到了这些方法:(1) 扩展Applicatio
1回复

如何在autobahn.ws中获得已订阅客户端的列表?

现在,我正在使用wamp-protocol,crossbar.io,autobahn.ws开发聊天。 我们只有两个客户的房间。 我需要定义其他客户端是否在会议室中,如果我在其他情况下向GCM提出请求,则发布新消息。 每个房间都有自己的uri,例如“ com.example.chat”。
1回复

可以在autobahn.ws中列出订户吗?

目前,我正在Web应用程序中开发控制台,以显示用户正在运行的* nix应用程序日志(游戏服务器),而我只想确保一个用户不能通过猜测主题名称来访问其他用户控制台。 我使用的是随机生成的字符串,由16个字符组成0-9,AZ,az,每次刷新页面时都会更改,每个主题名称的有效期为30分钟。
2回复

结合使用装饰器方法和Aut​​obahnWS,如何发布与订阅回调及其会话引用无关的消息?

在使用Subclassing-Approach之前,当我与Autobahn和WAMP一起工作时,偶然发现了装饰器/函数方法,而我实际上更喜欢装饰器/函数方法。 然而。 我有一个从外部硬件(通过回调)调用的函数,该函数每次被调用时都需要发布到Crossbar.io Router。 这
2回复

CannotListenError:无法监听任何内容:9008:[Errno 98]地址已在使用中

我正在通过Python在websocket上开发Autobahn的应用程序。 我发现了一个问题,如果中断后重新启动服务器代码一次,则服务器代码将向我发送错误消息,例如: 我错误地理解,即使在中断服务器之后,仍有一些基本服务正在运行,但是如何清除所有这些端口?