问题标签 [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.
crossbar - 我可以通过一次订阅订阅 crossbar.io 代理上的所有主题吗?
我正在尝试监视在 crossbar.io 代理上发布的所有主题。到目前为止,我的尝试是使用 'prefix' 的匹配策略订阅 topic="" 但这似乎不起作用,而具有 'prefix' 匹配策略的 topic="a" 确实会看到以 ' 开头的主题的所有事件一个'。
有没有办法监控整个批次?
wamp - 基于前缀和通配符模式的订阅的组合
是否有可能结合“前缀”和“通配符”订阅选项?我想订阅一个具有以下模式的频道:
频道..消息。*
在我的应用程序中,有一个日志组件应该为所有通道记录不同消息类型的值,如下所示:
有没有机会用 crossbar / wamp 订阅这样的主题?或者对于这种用例有更好的解决方案吗?
python - 使用 crossbar.io 在多线程模式下运行 Flask
有没有办法使用 crossbar.io 服务器以多线程模式启动 Flask 应用程序?
wamp - 重新连接后重新建立 WAMP 订阅
我在 Web 浏览器中使用 autobahn-js (0.11.2),在后端使用交叉开关消息路由器 (v17.2.1)。
如果网络断开(例如由于网络不佳),可以将 autobahn-js 客户端配置为尝试定期重新连接。
现在,在我的由高速公路驱动的网络应用程序中,session.subscribe('my.topic', myhandleevent)
动态创建了对不同 WAMP 主题的订阅。
是否有关于如何在重新连接时重新注册所有活动订阅的最佳实践?这甚至可以配置吗?
websocket - 如何在 Crossbar+Autobahn 中拦截 Websocket 调用
我想知道是否可以实现一些拦截器来检查 websocket RPC 中的用户身份验证。我的用例是
用户使用 URI 'com.safe.reg' 向自己注册一些令牌
令牌已针对 sessionid 进行验证和缓存
对于下一次调用其他 URI(比如“com.bus.op1”),我想确保令牌仍然有效,因此想要调用一些东西来检查缓存的 sessionid 令牌。
我希望每次业务调用都发生这种情况,而且我不想将会话 ID 作为函数调用中的参数发送。
这通常在 http 请求-响应通信中的拦截器中处理。我们如何在使用交叉开关的同时在 websockets 中实现这一点?
javascript - 以编程方式启动 crossbar.io
客观的
我有一个简单的发布服务器(在 nodejs 中,使用autobahn.js),它从机器接收数据,然后将其发布给感兴趣的订阅者。
我目前正在做集成测试,我需要知道:
- 如果 crossbar 正在运行,我需要测试服务器是否能够成功连接到它
- 如果没有,我需要启动 crossbar,运行之前的测试,然后杀死 crossbar
问题
据我所知,没有办法检测交叉开关是否正在运行,或者从代码中启动它。此外,我的研究使我想到了这个 github 问题:
这让我相信,如果不是不可能的话,使用 crossbar 运行集成测试需要一个相对详细的解决方法。
问题
- 有没有办法启动和测试交叉开关是否以编程方式运行?
- 如果没有,您如何使用交叉开关执行集成测试?
javascript - Sinon.js spy.call 不在 RPC 上工作
背景
我有一个使用交叉开关注册一些 RPC 的服务器,以及一个试图确保使用 sinon 调用 RPC 的测试。
代码
服务器.js
该服务器简单地连接到交叉开关,然后注册open
RPC。
现在我的测试用例。我正在使用带有 chai 的 mocha:
测试.js
该测试也打开了与交叉开关的连接,然后调用open
服务器上的方法。
问题
问题是,即使我看到了Hello World
console.log,证明该方法实际上已执行,但我的测试总是失败,因为 openSpy.called
总是false
(即使调用了 spied 方法!)。
我试过的
- 删除
Object.freeze
. 我知道间谍和存根实际上替换了他们正在监视的函数和对象,但在这种情况下,它没有帮助。 - 使用 a
stub
而不是spy
. 当我的间谍不起作用时,我尝试用open
a 替换该方法stub
并使用callsFake
来完成测试。不幸的是callsFake
,似乎从来没有被称为... - 使用
setTimeout
. 我想可能发生这种情况的原因是我很快就会进行测试,所以我创建了一个setTimeout
不断0
发展的expect
声明。也失败了。
问题
- 我究竟做错了什么?
- 我该如何解决?
autobahn - 处理通过 RPC 查询完整状态和发布的增量之间的竞争
我即将设计一个基于高速公路的系统。我经常遇到以下模式:
- 客户端可以通过 RPC 主题请求完整状态 - 例如,投票示例中的所有投票
- 此状态的更新由服务器发布 - 例如特定主题的更改投票
- 客户端通过结合完整状态和更新来跟踪当前状态。
问题如下:
由于高速公路的异步特性,在查询状态和发布更改之间存在潜在的竞争。
虽然在服务器端计算状态,但可能已经将更新发送到客户端。一旦客户端收到完整的状态,它就不再是最新的了。它必须使用较早收到的更新进行修补。
不知何故,我觉得这是一个普遍的问题。是否有一些关于如何处理这种情况的最佳实践?
我正在考虑这样的事情:
- 客户端首先订阅更新主题,然后才进行 RPC 调用。
- 服务器发送的所有数据都必须带有时间戳。
- 如果在 RPC 调用返回之前接收到更新,则将其保存。
- 一旦 RPC 调用到达,客户端会使用所有接收到的更新来修补状态,这些更新具有更新的时间戳。
这有意义吗?还是我错过了一些明显的东西?
我稍微修改了横杆投票示例以显示问题。
查询当前投票的 RPC 调用被人为延迟 5 秒。在收到状态之前打开 web 应用程序并提交投票时,一旦处理投票并收到更新,很快就会看到正确的投票计数。
最终延迟状态到达 - 并显示过时的投票计数。
redirect - 如何使用 Crossbar 的 Web 重定向服务?
我正在尝试使用 Crossbar 的重定向服务重定向 http 请求 (GET)。我正在为请求使用“curl”。重定向似乎工作正常,但我无法将我的(查询)参数传递到最终目的地。具体来说,我正在做:
在 localhost:8008 正在运行交叉开关路由器。路径“/redirection”在 Crossbar 的配置文件中定义:
服务器的响应(例如http://somewhere.com/something)是:
我究竟做错了什么?
python - 将 Autobahn|Python 与 aiohttp 集成
我正在尝试将aiohttp
Web 服务器集成到 Crossbar+Autobahn 系统架构中。
更详细地说,当aiohttp
服务器接收到某个 API 调用时,它必须向 Crossbar 路由器发布消息。我在官方 repos 上看到过这个例子,但我不知道如何将它集成到我的应用程序中。
理想情况下,我希望能够做到这一点
其中self
il 的一个实例SampleTaskController(object)
定义了 Web 服务器的所有路由处理程序。
请注意,我使用的是一个,zmq.asyncio.ZMQEventLoop
因为服务器也在侦听在方法zmq
内部配置的套接字controller.on_startup
。
我没有使用高速公路,而是尝试使用 Crossbar 将消息发布到 Crossbarwampy
并且它可以工作,但是高速公路订阅者无法正确解析消息。
-
使用此配置,订阅者会收到已发布的消息,但在解析时会出现异常。