问题标签 [autobahnjs]
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.
autobahn - 握手问题
使用横杆时我遇到了一些问题。我开始运行高速公路 python 后端和高速公路 js 前端,一切似乎都很正常,直到我收到此错误:
知道为什么吗?以及如何解决?
编辑:
这是一些代码(我正在使用 WAMP),但我认为问题与代码无关,因为它已在其他网络中工作,只是现在不在我所在的网络中。无论如何:
前端:
后端:
配置文件
javascript - autobahn JS,如果 RPC 的被调用者是异步的怎么办?
在autobahnJS的文档中提供了以下示例来说明如何设置远程过程调用 (RPC):
如果 add2 需要做一些异步操作怎么办?我的想法是,也许可以回调在客户端中注册的另一个远程函数,该函数触发了对 backend.add2 的初始调用。像这样的东西:
你有没有更好的选择?这对我来说似乎有点麻烦。理想情况下 add2 会返回一个承诺。但我不确定这是否可以通过 RPC 实现?
php - 本地主机上的 Thruway WebSocket 连接
按照https://github.com/voryx/Thruway的说明,我正在尝试在本地主机(Windows)上设置一个 websocket 服务器,这只会给我WebSocket connection to 'ws://127.0.0.1:9090/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
我通过它启动了服务器,> php vendor/voryx/thruway/Examples/SimpleClient.php
它给了我以下控制台输出:
2016-11-19T18:58:56.4982780 notice [Thruway\Peer\Client 308] Changing PHP precision from 14 to 16
2016-11-19T18:58:56.5007740 info [Thruway\Peer\Client 308] New client created
2016-11-19T18:58:56.5016600 info [Thruway\Transport\PawlTransportProvider 308] Starting Transport
在客户端,我使用来自https://github.com/crossbario/autobahn-js的推荐示例。哪个应该工作 - 我可以成功连接到测试服务器 ws://demo.thruway.ws:9090。
在 Windows 10 php7 上的最新 Chrome 中测试。
任何帮助或提示将不胜感激。
php - 如何使用 Thruway 在服务器端解析消息
我想将 websocket 用于投票应用程序。有两个部分:一个是聊天频道,另一个是命令频道,有关问题、可用答案、倒计时等的信息将在其中传播。
在客户端,我使用Autobahn|JS作为库。我可以轻松订阅我的两个频道(我可以在服务器日志上看到它)
在服务器端,我使用Thruway,因为它符合 WAMP v2。
我的问题:我不知道如何在服务器端挂钩消息以在每个主题上广播它们。似乎很容易,但我可以找到任何解决方案。
我想这是通过使用InternalClient,但我不太确定......
一些代码:
JS 客户端
紧接着,我在聊天框上添加了一个监听器:
PHP 服务器
服务器日志
如果您有任何想法……谢谢!:)
vuejs2 - 将 AutobahnJS 与 Vue.js 集成
我正在寻找一种将 Vue.js 与 AutobahnJS 集成的简单方法。我已经检查了这个repo 以获得指导/模板,但我的主要问题是 Autobahn 有两层“等待”:
- 首先你创建一个连接/会话实例
- 您等待它连接(甚至可能重试 N 次)
- 只有在此之后,您才能访问会话方法(订阅/呼叫/等..)
凭借我有限的 JS 知识(我是后端开发人员),我有两个想法:
- 创建一个全局变量,该变量将在连接后分配给高速公路会话。这肯定会导致 var 尚未设置的情况,因此每次我想从 vue 实例订阅时都必须检查它的存在。
- 将 Vue 初始化代码放入 Session 连接的回调中,但这会延迟整个应用程序,这显然也很糟糕。
我正在寻找一个简单有效的解决方案,不一定是一个成熟的插件(我在任何地方都没有找到)。
任何帮助/建议表示赞赏!
php - 高速公路 js + thruway php 连接建立错误
我正在使用PHP 高速公路库+ autobahn.js。
现在我正在尝试执行高速公路文档中的示例。我运行 aSimpleWebRouter
并尝试使用autobahn.js
.
我将侦听器 ip 更改为0.0.0.0:9090
,但高速公路仍然返回连接建立错误。
无法到达
但是服务器是可以访问的。
javascript - 如何使 Autobahn-JS 在 QML 中工作?
我们想在我的服务器客户端应用程序中使用 WAMP 协议。我找到了实现 Web 应用程序消息传递协议 (WAMP) 的Autobahn-js 。我们想使用 QML 来设计前端(瘦客户端)并针对 Android、IOS、Windows Mobile 和桌面平台。由于 Autobahn-js 是用 Javascript 编写的,我认为它会起作用。但不幸的是,它没有。
以下是我所做的:
我已经从 Github 下载了Autobahn Js库。
我已将所有文件包含在我的 QML 项目中。
将“lib/autobahn.js”导入为 AutoBhan
然后出现错误 qrc:/lib/autobahn.js:15: ReferenceError: require is not defined
谷歌搜索后我才知道“require() 函数是 node.js 的核心函数,它是引擎的一部分。它不是特定于语言的东西,就像基于浏览器的 Javascript 中的窗口对象不是 Javascript 中的东西语言。node.js 实际上是:一个服务器端的 JavaScript 引擎,它执行 JavaScript 文件。它不是一个框架,你可以加载到像 Qt 这样的另一个引擎中。资源。
这是我的问题:
如何制作/构建 Autobahn Js 库,以便可以在 qml 中使用高速公路?这实际上使 node.js 函数在 qml 中运行。
尽管有 C++ 实现,但我不相信在 qml 中使用 C++ 包装器,因为它依赖于像 Boost 这样的第三方。
是否可以在 QML 中制作依赖于 node.js 函数的 JS 库?请告诉我。谢谢
仅供参考:我使用Crossbar.io作为路由器
wamp - 重新连接后重新建立 WAMP 订阅
我在 Web 浏览器中使用 autobahn-js (0.11.2),在后端使用交叉开关消息路由器 (v17.2.1)。
如果网络断开(例如由于网络不佳),可以将 autobahn-js 客户端配置为尝试定期重新连接。
现在,在我的由高速公路驱动的网络应用程序中,session.subscribe('my.topic', myhandleevent)
动态创建了对不同 WAMP 主题的订阅。
是否有关于如何在重新连接时重新注册所有活动订阅的最佳实践?这甚至可以配置吗?
javascript - s3 无法访问 autobahn.js 文件
一段时间以来,我在我的项目中使用 autobahn.js 和 autobahn.min.js 文件,这些文件直接链接自:
正如http://autobahn.ws/网站上所建议的那样。
今天我发现以上两个文件不再可以通过这些链接访问。我唯一能看到的是带有消息的 403 错误:访问被拒绝。
我在任何地方都找不到任何镜子。我尝试使用以下指令构建它们:http: //autobahn.ws/js/building.html。没有这样的运气。我在哪里可以找到 autobahn.js 文件,以便在将来发生这种情况时下载它们?
javascript - 以编程方式启动 crossbar.io
客观的
我有一个简单的发布服务器(在 nodejs 中,使用autobahn.js),它从机器接收数据,然后将其发布给感兴趣的订阅者。
我目前正在做集成测试,我需要知道:
- 如果 crossbar 正在运行,我需要测试服务器是否能够成功连接到它
- 如果没有,我需要启动 crossbar,运行之前的测试,然后杀死 crossbar
问题
据我所知,没有办法检测交叉开关是否正在运行,或者从代码中启动它。此外,我的研究使我想到了这个 github 问题:
这让我相信,如果不是不可能的话,使用 crossbar 运行集成测试需要一个相对详细的解决方法。
问题
- 有没有办法启动和测试交叉开关是否以编程方式运行?
- 如果没有,您如何使用交叉开关执行集成测试?