问题标签 [wamp-protocol]

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

python - 循环发布

我试图在无限循环中发布一些东西。但它不起作用。如果我在没有循环的情况下尝试相同的代码,它似乎工作正常。

上面的代码无限打印'XYZ',但我无法在我的客户端上接收发布。下面的代码工作正常,我收到了 obj 发布发送:

0 投票
1 回答
110 浏览

javascript - AutobahnJS:远程调用异步函数

我正在尝试通过 WAMP 调用远程函数。但是如果它具有异步行为,我不知道如何编写被调用函数。在每个示例中,我都看到远程函数返回结果。如何以我通常使用回调的异步方式完成此操作?

示例:这是一个将异步获取文件内容的函数的注册。

这是我远程调用该函数的方法。

但这是注册的实际功能。

如何从 getFileContents 返回数据,以便可以通过 WAMP 连接发回?我知道我可以使用 readFileSync 并返回它返回的内容。但我特别询问如何以异步方式执行此操作。

0 投票
2 回答
4805 浏览

c++ - 连接到 Poloniex Push-API

我想连接到Poloniex 的 Push API。在他们的页面上,他们写道:

要使用推送 API,请连接到 wss://api.poloniex.com 并订阅所需的提要。

wss = WebSocket 安全 -> SSL 保护

他们还举了一个 Node.js 和 Autobahn|JS 的例子:

但是,我不想使用 JavaScript,而是使用 C++。还有一个用于 C++ 的 Autobahn-Library,称为Autobahn|CPP。我已经安装了它并尝试运行他们的订阅者示例代码,几乎没有修改(基本上只是硬编码地址和端口):

这里有几件事要解释:我通过简单地 ping api.poloniex.com找到了 IP 地址173.236.42.218

端口 443 是标准 SSL 端口。我尝试使用标准 WAMP/WebSocket 端口 8000,但服务器不接受。80也不接受。

所以如果我启动程序,输出如下:

启动io服务

连接到服务器

然后,什么也没有发生。所以代码必须停留在session_start() ,在那里执行 WS 握手,当您在第 80 行查看wamp_session.ipp时可以看到什么。

在我看来,问题在于 API 想要使用安全连接 (ws : //)。这段代码似乎没有尝试创建 SSL 加密连接,而且我不知道如何告诉会话我需要一个安全的连接。

编辑:在这个问题中,作者说 Autobahn 不能处理混合的 http/wamp 服务器,在使用 WebSocket 协议之前首先需要升级http-request。我知道 Poloniex 使用这种混合类型,但我尝试使用 Autobahn| 访问 API JS已经在那里它工作正常,也发送升级请求。所以也许这是一条高速公路| CPP问题?

编辑 2:如果上述情况属实,是否可以自己发送 Http-Update-Request,甚至可以在连接上进行 SSL 加密?我不确定,因为这可能会干扰图书馆。

0 投票
1 回答
176 浏览

c++ - pub 运行速度快于 sub 时内存不足

我正在使用 autobahn-cpp 进行一些 pub&sub 测试。但是,我发现当您以比子端点可以消耗的速度更快的频率发布一些数据时,这将导致路由器(交叉开关)缓存一些数据并且内存使用量增加。最终,路由器将耗尽所有内存并被操作系统杀死。

例如

出版商:

订户:

经过几个houser:

dmsg:

我的问题:

  • 这正常吗(耗尽所有内存并被操作系统杀死)?
  • 或者是否可以设置任何配置选项来限制内存使用?

我发现了一个类似的问题,请参阅链接https://github.com/crossbario/crossbar/issues/48

系统信息:ubuntu 14.04(32bit)、CPython 2.7.6、Crossbar.io 0.11.1、Autobahn 0.10.9

0 投票
1 回答
305 浏览

javascript - 使用 AutobahnJS 客户端连接到 Crossbar 路由器服务器时如何指定客户端的角色/AuthID?

我已经设置了一个具有多个角色的交叉路由器服务器,每个角色都有不同的注册/调用/订阅/发布权限。
然后我使用 AutobahnJS 客户端连接到路由器。但我不知道如何在搜索API 参考页面后指定客户端角色(或路由器确定我的客户端角色的 AuthID?) 。有人对此有任何线索吗?

(PS 默认的“匿名”角色是可以的。)

0 投票
1 回答
448 浏览

crossbar - 我可以使用 crossbar.io 传递二进制消息吗

所以我想通过 websocket 将声音字节从手机传输到服务器。然而,根据http://crossbar.io/docs/Features crossbar 似乎只实现了 json 和 msgpack。我可以使用其他方式通过交叉开关传输二进制消息吗?此外,多个交叉开关客户端(例如)似乎只提供 json 和 webpack 作为反序列化格式。我错过了什么吗?

0 投票
1 回答
297 浏览

ruby - Ruby wamp-client gem - 连接到 crossbar.io

我是 Ruby 新手

我正在尝试使用 wamp-client gem 建立与 crossbar.io 路由器的连接。Crossbar 具有通过 crossbar 模板(python 作为后端)创建的所有默认设置和应用程序。当我通过浏览器连接时,一切都很好,但是当我尝试通过简单地使用 ruby​​ 时

我有一个 `handle_opening_handshake_response':未处理的打开握手响应 # (Net::WS::Error)' 错误。我知道要处理握手,我的 WAMP 路由器应该发送 HTTP 101 交换协议,但它没有这样做(在 wireshark 中看不到)。请帮帮我。

客户要求:

路由器返回:

0 投票
1 回答
526 浏览

network-programming - WAMP 协议 - 在多台机器上扩展路由器

我一直在考虑将WAMP路由器扩展到多台机器上。特别是因为在没有备份系统的情况下依赖一个系统在现场场景中似乎有点困难。

为了不进行复杂的主节点选举以及随之而来的所有事情,我有以下想法,我很想得到一些反馈。

路由器需要共享一些信息,即:

验证

  • 会话 ID

RPC

  • 使用简单注册时检查客户端是否已经注册了 uri
  • 转发基于模式注册的呼叫
  • 元 API 信息

发布/订阅

  • 向网络中的所有客户端提供事件消息
  • 元 API 信息

所有路由器之间必须有连接。为了保持连接和流量低,想法是拥有一个环形基础设施:

每个路由器都有自己的客户端连接到下一个路由器。通过存储来自客户端的 CALL 或 PUBLISH 的传入消息 ID,路由器可以识别往返行程。来自另一个路由器的来电将按原样处理。产量将具有正确的 INVOCATION.Request|id 并可以转发到正确的路由器。

丢失路由器

该基础架构强制所有路由器都具有一些静态且相同的配置。这意味着动态缩放将不起作用,但因此不需要领导者选举。如果一个路由器被杀死,下一个路由器将从路由器列表中连接。持续轮询可以检查路由器是否重新联机。

我没有对此做任何深入的研究。因此,我很乐意为此获得一些意见。

0 投票
1 回答
682 浏览

php - 如何从局域网中的另一台计算机通过 WampServer 1.7.3 访问数据库?

Web 应用程序托管在 WampServer 1.7.3 上的本地计算机中。如何通过局域网从另一台计算机访问数据库。

0 投票
1 回答
710 浏览

python - 用于使用 Crossbar/Autobahn 的用户通知的身份验证?

我目前正在尝试通过 Crossbar/Autobahn 使用 Websockets 实现用户通知系统。我已经完成了多项测试并浏览了文档,但是,我不确定是否有解决方案可以让以下工作流程工作:

  1. 用户使用 Web 应用程序登录——这是通过 JWT 完成的
  2. crossbar前端与正在运行的实例建立 websocket 连接。
  3. 前端尝试订阅专门用于用户通知的 URI:即com.example.notifications.user.23com.example.user.23.notifications'. Where23` 是用户 ID。
  4. 检查用户的 JWT 以查看是否允许用户访问订阅。
  5. 当活动生成并引起通知时,后端会发布用户特定的 URI。

对于第 3 步,我无法判断当前的支持身份验证方法是否满足我的需要。理想情况下,我想要一个可以自定义的身份验证方法(以便在 Crossbar 中实现 JWT 身份验证器),我可以将其应用于 URI 模式,但不能将整个模式的访问权限授予订阅用户。这部分通过动态身份验证方法解决,但缺少后半部分:

例如(我理想的工作流程):

  1. 用户尝试订阅 URI com.example.user.23.notifications
  2. URI 匹配com.example.user..notificationshttp://crossbar.io/docs/Pattern-Based-Subscriptions/中的通配符模式)
  3. 验证令牌已验证,并且用户只能 com.example.user.23.notifications访问.

以上是否可以通过简单的方式实现?据我所知,只有当我以某种方式生成一个.crossbar/config.json包含所有用户 ID 的 URI 排列的...并为每个新用户自动生成一个新配置时才有可能——这完全不是一个合理的解决方案。

任何帮助表示赞赏!