问题标签 [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 回答
95 浏览

python - 如何在 Crossbar.io 中创建/请求其他有状态的工作人员并保持隔离?

我正在开发一个 Python Web 应用程序,每个用户都会获得一个会话,并且会话是有状态的。每个会话公开 RPC 和主题,使用户能够与之交互(例如创建对象、删除对象等)。

我一直在考虑使用 Crossbar.io 来管理这些会话,每个会话都作为一个工作人员,并以一种语言竞争的方式公开 RPC 和主题。

我玩了这个演示:https ://demo.crossbar.io/gauges/index.html ,它非常接近我想要完成的。我想使用“控制器通道”参数使会话在用户之间保持分离。

在阅读了各种文档之后,我对一些事情仍然有些不清楚:

  • 新工人是如何产生的?是否必须在使用新的控制器通道之前显式创建它们?
  • 工人如何被解雇?我的员工可能会使用大量内存,所以我想在会话结束时终止他们。

如果 Crossbar.io 对我的应用程序来说不是一个好的解决方案,我愿意接受建议。

0 投票
1 回答
1049 浏览

python - 使用带有 Twisted ReconnectingClientFactory 的 Autobahn Python 重新连接后如何重新注册 WAMP 被调用者?

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

但是,当从丢失的连接中恢复时,不能重新注册被叫名称,因为被叫名称仍然是从先前丢失的连接中注册的。这会导致错误“wamp.error.procedure_already_exists”。因为被叫名称注册仍然与先前丢失的连接相关联,所以我要取消注册旧的被叫名称。

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

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

0 投票
0 回答
85 浏览

mysql - 在nodejs crossbar实现中从mysql返回值

我刚开始使用 crossbar 和 nodejs。我有 PHP 背景。我知道 nodejs 上的 mysql 是异步的,所以我添加了一个回调,但我无法让回调从交叉开关返回一个值给 register 方法。处理这个问题的正确方法是什么?

0 投票
1 回答
367 浏览

crossbar - Crossbar.io 外部工作者配置

我一直在使用横杆一段时间,我喜欢它。我有一个关于运行将连接到外部路由器的工作人员的最佳方式的问题。我正在使用“crossbar start”并创建一个连接到路由器的配置文件,效果很好。

最近我的要求已更改为我想通过环境变量将路由器 url 和领域传递到配置文件的位置。经过反复试验,我得出结论,这在当前的 XBAR 实施中是不可能的。

然后,我查看了使用以下内容创建应用程序运行程序,其中我从配置变量中检索了领域和 url

这可行,但我随后注意到我的服务器会定期关闭。在引起根源之后,我意识到反向代理在 1 小时不活动后超时连接。查看服务器日志,我得到了“onDisconnect”回调。查看 XBAR 应用程序运行器文档,它说明了以下内容

我的服务作为守护进程在“runit”脚本中运行。我想出的一些快速修复是

  • 杀死跑步者并让守护进程重新启动服务
  • 在任何断开连接时显式执行加入过程

鉴于 XBAR 人员明确表示 ApplicationRunner 是一种开发工具,所有这些都开始让人觉得很奇怪。任何人都知道除了应用程序运行程序之外我是否可以使用其他东西,或者我可以通过某种方式将环境变量放入 config.json 文件中?

作为临时解决方法,我正在使用 sed。这是我的配置文件

}

我的 runit 脚本是

0 投票
1 回答
294 浏览

python - 来电者识别高速公路 | Python

我正在尝试找出如何在 Autobahn|Python 中披露调用者,如下所述:http: //crossbar.io/docs/Caller-Identification/ 我在文档中找到了以下内容:

因此尝试:

没有运气。任何帮助将不胜感激。

0 投票
1 回答
1296 浏览

websocket - 使用高速公路作为 WAMP 路由器的缺点?

我目前正在研究使用 WAMP 协议在我未来的 Web 应用程序的服务器和客户端之间进行同步。

他们建议使用crossbar.io 作为路由器,但由于 Autobahn 本身支持所有四个角色(发布者、订阅者、调用者、被调用者),我想知道为什么我需要另一个路由器框架,如 crossbar.io?

我想将 node.js 与 Autobahn|JS 一起用作路由器,并将 Web 浏览器中的 Autobahn|JS 用作客户端。这是可行的还是我在这里遗漏了什么?

0 投票
0 回答
268 浏览

django - Crossbar : 非 WAMP 客户端作为身份验证节点

高级问题:如何配置 Crossbar 以通过有权访问用户 DB 的 Web 服务器对 WAMP 客户端进行身份验证。

描述:

使用crossbar 动态认证,WAMP 节点(可以访问用户 DB)可以注册认证功能,如下所示。

当然,crossbar 也将配置动态身份验证。

就我而言,用户 DB 使用 Django HTTP REST 服务器,它不是常规的 WAMP 客户端。

但是,我看到 crossbar HTTP Bridge Service 提供了这个HTTP Callee REST API。我看到您可以配置交叉开关来注册一个 WAMP 程序(例如 com.myapp.rest),该程序将请求发送到 HTTP 服务器(例如https://httpbin.org/),如下所示。

综观上面,我正在考虑为我的 Web 服务器提供身份验证功能(根据我的理解),如下所示。

  1. 当一个普通的 WAMP 客户端想要连接到路由器时,crossbar 会发出 RPC 调用来进行身份验证。
  2. 然后使用 HTTP Callee 服务,crossbar 会将 WAMP 过程转换为 HTTP 请求,该请求将到达我的 Web 服务器。
  3. 在我的 Web 服务器中,我将提取身份验证参数,对用户进行身份验证并返回成功/失败响应。

所以看起来,它可以工作。

但是,我看到从 WAMP 客户端调用该过程有特殊的语法。

这与您调用常规 RPC 的方式不同

问题:是否可以按照我的建议(步骤 1 到 3)让交叉开关从我的 Web 服务器请求身份验证信息。

0 投票
1 回答
359 浏览

autobahn - 如何配置高速公路发布以使订阅事件通过详细信息参数获取主题?

我是 Autobahn 和 crossbar.io 的新手。到目前为止,我尝试制作一个onEvent可以同时订阅不同主题的功能。但是,我需要这个函数来知道哪个消息来自哪个主题。然后,我发现函数中有一个details参数subscibe,其中包含一个topic参数。但是,在接收消息时,此参数始终显示None. 谁能告诉我如何进行正确的设置?这可以在 Autobahn|JS 和 Autobahn|Python 中完成吗?

(在我的场景中,我使用exact-match-uri-method来订阅几个主题。希望任何人提供的方法都可以在这种情况下工作)

谢谢

0 投票
1 回答
721 浏览

autobahn - Crossbar.io/Autobahn 服务器端会话存储

我正在尝试设置一个可以处理单个客户端的会话数据的 WAMP 服务器。然而,这似乎比最初想象的更麻烦。

横梁配置:

服务器.py:

服务器注册两个 RPC,一个用于附加数据,一个用于返回数据字符串。数据存储为self.data,但这是存储所有会话的数据,而不是基于每个客户端、每个会话。一旦会话终止,服务器应该清理会话数据。简单地清理列表不是解决方案,因为同时客户端可以访问彼此的数据。客户端的 id 在appendRPC 中可用(如果客户端公开了自己),但是此时这似乎毫无用处。

客户端.py:

客户端连接到服务器,等待连接打开并执行 RPC。'a'客户端首先将和附加'b'到服务器的数据,然后获取并打印数据。结果应该是ab每个客户端,每个会话都应该存储数据。会话结束后,应清理数据。

希望有人能告诉我如何在服务器内存中存储每个客户端、每个会话的数据。

0 投票
1 回答
729 浏览

javascript - 节点 js Websocket 路由器

我正在为我的公司构建一个聊天应用程序,并决定将 node js 与 websocket (ws) 一起使用。在我的应用程序中,每个部门都有多个部门和用户,当浏览器(提问的人)选择特定部门时,希望将聊天重定向到同一个部门。

我决定使用 WAMP 路由器,但没有示例脚本显示如何将每个聊天重定向到浏览器选择的特定部门。

任何人都可以帮助我吗

干杯

苏尼尔