问题标签 [crossbar]

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 回答
242 浏览

crossbar - 我可以通过一次订阅订阅 crossbar.io 代理上的所有主题吗?

我正在尝试监视在 crossbar.io 代理上发布的所有主题。到目前为止,我的尝试是使用 'prefix' 的匹配策略订阅 topic="" 但这似乎不起作用,而具有 'prefix' 匹配策略的 topic="a" 确实会看到以 ' 开头的主题的所有事件一个'。

有没有办法监控整个批次?

0 投票
0 回答
28 浏览

wamp - 基于前缀和通配符模式的订阅的组合

是否有可能结合“前缀”和“通配符”订阅选项?我想订阅一个具有以下模式的频道:

频道..消息。*

在我的应用程序中,有一个日志组件应该为所有通道记录不同消息类型的值,如下所示:

有没有机会用 crossbar / wamp 订阅这样的主题?或者对于这种用例有更好的解决方案吗?

0 投票
1 回答
155 浏览

python - 使用 crossbar.io 在多线程模式下运行 Flask

有没有办法使用 crossbar.io 服务器以多线程模式启动 Flask 应用程序?

0 投票
1 回答
351 浏览

wamp - 重新连接后重新建立 WAMP 订阅

我在 Web 浏览器中使用 autobahn-js (0.11.2),在后端使用交叉开关消息路由器 (v17.2.1)。

如果网络断开(例如由于网络不佳),可以将 autobahn-js 客户端配置为尝试定期重新连接。

现在,在我的由高速公路驱动的网络应用程序中,session.subscribe('my.topic', myhandleevent)动态创建了对不同 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 回答
96 浏览

javascript - 以编程方式启动 crossbar.io

客观的

我有一个简单的发布服务器(在 nodejs 中,使用autobahn.js),它从机器接收数据,然后将其发布给感兴趣的订阅者。

我目前正在做集成测试,我需要知道:

  • 如果 crossbar 正在运行,我需要测试服务器是否能够成功连接到它
  • 如果没有,我需要启动 crossbar,运行之前的测试,然后杀死 crossbar

问题

据我所知,没有办法检测交叉开关是否正在运行,或者从代码中启动它。此外,我的研究使我想到了这个 github 问题:

这让我相信,如果不是不可能的话,使用 crossbar 运行集成测试需要一个相对详细的解决方法。

问题

  1. 有没有办法启动和测试交叉开关是否以编程方式运行?
  2. 如果没有,您如何使用交叉开关执行集成测试?
0 投票
2 回答
253 浏览

javascript - Sinon.js spy.call 不在 RPC 上工作

背景

我有一个使用交叉开关注册一些 RPC 的服务器,以及一个试图确保使用 sinon 调用 RPC 的测试。

代码

服务器.js

该服务器简单地连接到交叉开关,然后注册openRPC。

现在我的测试用例。我正在使用带有 chai 的 mocha:

测试.js

该测试也打开了与交叉开关的连接,然后调用open服务器上的方法。

问题

问题是,即使我看到了Hello Worldconsole.log,证明该方法实际上已执行,但我的测试总是失败,因为 openSpy.called总是false(即使调用了 spied 方法!)。

我试过的

  1. 删除Object.freeze. 我知道间谍和存根实际上替换了他们正在监视的函数和对象,但在这种情况下,它没有帮助。
  2. 使用 astub而不是spy. 当我的间谍不起作用时,我尝试用opena 替换该方法stub并使用callsFake来完成测试。不幸的是callsFake,似乎从来没有被称为...
  3. 使用setTimeout. 我想可能发生这种情况的原因是我很快就会进行测试,所以我创建了一个 setTimeout不断0发展的expect声明。也失败了。

问题

  1. 我究竟做错了什么?
  2. 我该如何解决?
0 投票
1 回答
35 浏览

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

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

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

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

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

我正在考虑这样的事情:

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

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

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

0 投票
1 回答
83 浏览

redirect - 如何使用 Crossbar 的 Web 重定向服务?

我正在尝试使用 Crossbar 的重定向服务重定向 http 请求 (GET)。我正在为请求使用“curl”。重定向似乎工作正常,但我无法将我的(查询)参数传递到最终目的地。具体来说,我正在做:

在 localhost:8008 正在运行交叉开关路由器。路径“/redirection”在 Crossbar 的配置文件中定义:

服务器的响应(例如http://somewhere.com/something)是:

我究竟做错了什么?

0 投票
1 回答
554 浏览

python - 将 Autobahn|Python 与 aiohttp 集成

我正在尝试将aiohttpWeb 服务器集成到 Crossbar+Autobahn 系统架构中。

更详细地说,当aiohttp服务器接收到某个 API 调用时,它必须向 Crossbar 路由器发布消息。我在官方 repos 上看到过这个例子,但我不知道如何将它集成到我的应用程序中。

理想情况下,我希望能够做到这一点

其中selfil 的一个实例SampleTaskController(object)定义了 Web 服务器的所有路由处理程序。

请注意,我使用的是一个,zmq.asyncio.ZMQEventLoop因为服务器也在侦听在方法zmq内部配置的套接字controller.on_startup

我没有使用高速公路,而是尝试使用 Crossbar 将消息发布到 Crossbarwampy并且它可以工作,但是高速公路订阅者无法正确解析消息。

-

使用此配置,订阅者会收到已发布的消息,但在解析时会出现异常。