问题标签 [autobahnws]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
566 浏览

javascript - 断开与 Autobahn JS 的会话

我在 angularJS 应用程序中断开与 websocket 的会话时遇到问题。我知道 Autobahn JS 提供了一个 diconnect() 函数,但它仍然不起作用。

这是连接部分:

感谢您的任何建议

0 投票
0 回答
176 浏览

python - 高速公路python握手错误

我们在 Redhat (Red Hat 4.8.3-9) 上使用 python 2.7.5 并尝试在 Autobahn Python 中运行简单的 helloworld,同时启动服务器,我们收到以下错误:

您的帮助将不胜感激。

谢谢

以下是我的代码:

0 投票
1 回答
136 浏览

wamp - 从远程过程返回一个数组

我使用 Thruway 客户端注册了一个 RCP 程序,并使用 Autohahn 客户端调用它。

我面临的问题是,当被调用者从过程return array();中返回一个空数组时,调用者会收到该null值。

当被调用者返回一个单元素数组return array(['foo' => 'bar', 'baz' => 'quux']);时,调用者接收到未包装在数组中的对象。

并且只返回一个数组中的多个对象按预期工作:调用者接收一个对象数组。

这绝对不方便且不直观:我必须检查响应是否已定义,是否为数组...我希望调用者接收我实际从被调用者发送的内容:一个空数组,一个元素的数组和多个元素的数组。我发送一个数组 - 我希望客户端得到一个数组。

问题是:如何解决这种行为?我什至不确定这两个客户端中的哪一个配置错误。或者这可以在路由器上配置(我使用 Crossbar 作为路由器)。或者这可能是协议的预期实现(这太糟糕了)。

0 投票
1 回答
645 浏览

websocket - 如何在 autobahn.ws 中获取订阅客户的列表?

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

这就是为什么我需要在指定的 uri 'com.example.chat.' 中获取客户列表。

0 投票
0 回答
801 浏览

python - 如何为 websocket 编写 TestCase?

我只想WebSocketClientProtocol在 setUp 和 tearDown 中编写一个 TestCase 我认为我正确设置了服务器。

我想要的就是test client connected to server and server send some message client will receive这样。

下面是我尝试制作的代码,但我不会从这里走得更远

0 投票
0 回答
592 浏览

autobahn - 握手问题

使用横杆时我遇到了一些问题。我开始运行高速公路 python 后端和高速公路 js 前端,一切似乎都很正常,直到我收到此错误:

知道为什么吗?以及如何解决?

编辑:

这是一些代码(我正在使用 WAMP),但我认为问题与代码无关,因为它已在其他网络中工作,只是现在不在我所在的网络中。无论如何:

前端:

后端:

配置文件

0 投票
1 回答
125 浏览

javascript - Autobahn javascript 连接 - 传递动态服务器

我正在使用下面的 javascript 代码连接到高速公路服务器。所有这些时间我都使用静态 ip,但现在 ip 将是动态的。如何传递动态服务器 ip 并动态连接高速公路?

0 投票
1 回答
204 浏览

python - 带有 .NET 路由器的高速公路组件 (WampSharp)

目前我正在使用 WAMP 原型,我很好奇这样的事情是否可行,因为我无法让它工作:

1.拥有用 c# (WampSharp) 编写的 WAMP 路由器:

2.拥有用python编写的组件:

当我运行 python 脚本时,出现错误:

根据http://autobahn.ws/python/wamp/programming.html#running-a-wamp-router

我们创建的组件尝试连接到本地运行的 WAMP 路由器,该路由器接受端口 8080 上的连接,并用于领域 realm1。

我们建议的方法是使用 Crossbar.io 作为您的 WAMP 路由器。除了 Crossbar.io 之外,还有其他 WAMP 路由器。

这样的事情能实现吗?

谢谢,
西瓦

0 投票
0 回答
54 浏览

websocket - 如何在 Crossbar+Autobahn 中拦截 Websocket 调用

我想知道是否可以实现一些拦截器来检查 websocket RPC 中的用户身份验证。我的用例是

  1. 用户使用 URI 'com.safe.reg' 向自己注册一些令牌

  2. 令牌已针对 sessionid 进行验证和缓存

  3. 对于下一次调用其他 URI(比如“com.bus.op1”),我想确保令牌仍然有效,因此想要调用一些东西来检查缓存的 sessionid 令牌。

我希望每次业务调用都发生这种情况,而且我不想将会话 ID 作为函数调用中的参数发送。

这通常在 http 请求-响应通信中的拦截器中处理。我们如何在使用交叉开关的同时在 websockets 中实现这一点?

0 投票
1 回答
35 浏览

autobahn - 处理通过 RPC 查询完整状态和发布的增量之间的竞争

我即将设计一个基于高速公路的系统。我经常遇到以下模式:

  • 客户端可以通过 RPC 主题请求完整状态 - 例如,投票示例中的所有投票
  • 此状态的更新由服务器发布 - 例如特定主题的更改投票
  • 客户端通过结合完整状态和更新来跟踪当前状态。

问题如下:
由于高速公路的异步特性,在查询状态和发布更改之间存在潜在的竞争。
虽然在服务器端计算状态,但可能已经将更新发送到客户端。一旦客户端收到完整的状态,它就不再是最新的了。它必须使用较早收到的更新进行修补。

不知何故,我觉得这是一个普遍的问题。是否有一些关于如何处理这种情况的最佳实践?

我正在考虑这样的事情:

  • 客户端首先订阅更新主题,然后才进行 RPC 调用。
  • 服务器发送的所有数据都必须带有时间戳。
  • 如果在 RPC 调用返回之前接收到更新,则将其保存。
  • 一旦 RPC 调用到达,客户端会使用所有接收到的更新来修补状态,这些更新具有更新的时间戳。

这有意义吗?还是我错过了一些明显的东西?

我稍微修改了横杆投票示例以显示问题。
查询当前投票的 RPC 调用被人为延迟 5 秒。在收到状态之前打开 web 应用程序并提交投票时,一旦处理投票并收到更新,很快就会看到正确的投票计数。
最终延迟状态到达 - 并显示过时的投票计数。