问题标签 [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 投票
1 回答
325 浏览

python - 与 crossbar.io 的连接挂起或断开连接

我正在尝试使用带有高速公路的 Python [Twisted] 连接到远程主机上的交叉开关

我正在使用来自 PubSub 的修改示例代码:

我在我的本地主机上运行了一个交叉开关实例进行测试,当我访问它时,一切正常。

但是如果我尝试连接到其他主机,会发生两件事: 如果它是安全端口:

(会话永远不会附加,程序挂起)

如果它是一个不安全的端口:

(在会话连接之前,连接会自动将我踢出

我尝试连接的主机有 8080 用于安全端口和 8081 用于不安全。所以我改变的只是:

我想知道我是否遗漏了有关 WAMP 连接的明显内容,或者这可能是我尝试连接的交叉开关实例上的配置问题。

0 投票
1 回答
136 浏览

wamp - 从远程过程返回一个数组

我使用 Thruway 客户端注册了一个 RCP 程序,并使用 Autohahn 客户端调用它。

我面临的问题是,当被调用者从过程return array();中返回一个空数组时,调用者会收到该null值。

当被调用者返回一个单元素数组return array(['foo' => 'bar', 'baz' => 'quux']);时,调用者接收到未包装在数组中的对象。

并且只返回一个数组中的多个对象按预期工作:调用者接收一个对象数组。

这绝对不方便且不直观:我必须检查响应是否已定义,是否为数组...我希望调用者接收我实际从被调用者发送的内容:一个空数组,一个元素的数组和多个元素的数组。我发送一个数组 - 我希望客户端得到一个数组。

问题是:如何解决这种行为?我什至不确定这两个客户端中的哪一个配置错误。或者这可以在路由器上配置(我使用 Crossbar 作为路由器)。或者这可能是协议的预期实现(这太糟糕了)。

0 投票
1 回答
125 浏览

python - 将 pycurl 导入 crossbar.io 错误

好的,所以我想使用 crossbar.io 并在 python 中构建一个应用程序。

我可以让演示工作,但是我的应用程序需要分离使用 pycurl 来监听长期 http 连接的线程。

分别,crossbar.io 代码和 pycurl 代码工作,但是当我执行以下操作时,我得到“找不到导入”:

legacy_Listener 包含带有“import pycurl”的线程代码(这个模块本身就很好用)

现在,一旦我将 crossbar.io 示例代码与我自己的代码混合在一起,我就会收到以下错误:

2016-04-09T20:42:13+0100 [控制器 26219] ID 为“worker2”和 PID 26333 的容器已启动 2016-04-09T20:42:13+0100 [容器 26333] 组件加载失败 Traceback(最近一次调用最后一次) :文件“/opt/crossbar/site-packages/autobahn/wamp/websocket.py”,第 90 行,onMessage self._session.onMessage(msg) 文件“/opt/crossbar/site-packages/autobahn/wamp/protocol .py”,第 809 行,onMessage on_reply = txaio.as_future(endpoint.fn, *invoke_args, **invoke_kwargs) 文件“/opt/crossbar/site-packages/txaio/tx.py”,第 339 行,as_future 返回MaybeDeferred(fun, *args, **kwargs) 文件“/opt/crossbar/site-packages/twisted/internet/defer.py”,第 150 行,在 MaybeDeferred 结果 = f(*args, **kw) --- --- 文件“/opt/crossbar/site-packages/crossbar/worker/container.py”,第 192 行,在 start_container_component create_component = _appsession_loader(config) 文件“/opt/crossbar/site-packages/crossbar/worker/在里面.py",第 74 行,在 _appsession_loader pythonpath=sys.path autobahn.wamp.exception.ApplicationError: ApplicationError(error=, args=['Failed to import class \'hello.AppSession\'\nTraceback (最近一次调用最后) :\n 文件“/opt/crossbar/site-packages/autobahn/wamp/protocol.py”,第 809 行,在 onMessage\n on_reply = txaio.as_future(endpoint.fn, *invoke_args, **invoke_kwargs)\n 文件"/opt/crossbar/site-packages/txaio/tx.py",第 339 行,在 as_future 中\n return maybeDeferred(fun, *args, **kwargs)\n 文件 "/opt/crossbar/site-packages/twisted /internet/defer.py”,第 150 行,在可能延迟中\n 结果 = f(*args, **kw)\n 文件“/opt/crossbar/site-packages/crossbar/worker/container.py”,第 192 行,在 start_container_component\n create_component = _appsession_loader(config)\n--- ---\n 文件“/opt/crossbar/site-packages/crossbar/worker/init .py",第 58 行,在 _appsession_loader\n 模块 = importlib.import_module(module_name)\n 文件 "/opt/crossbar/lib-python/2.7/importlib/init .py ",第 37 行,在 import_module\n 导入(名称)\n 文件“/home/osboxes/qbtwebmon/hello.py”,第 36 行,\n from legacy_misc import Legacy_Listener\nexceptions.ImportError: No module named legacy_misc\n'], kwargs={'pythonpath': [u'/home/osboxes/qbtwebmon', '/opt/crossbar/site-packages/crossbar/worker', '/opt/crossbar/bin', '/opt/crossbar/lib_pypy/ extensions', '/opt/crossbar/lib_pypy', '/opt/crossbar/lib-python/2.7', '/opt/crossbar/lib-python/2.7/lib-tk', '/opt/crossbar/lib-python /2.7/plat-linux2', '/opt/crossbar/site-packages', '/home/osboxes/qbtwebmon/wamp_venv/lib/python2.7/site-packages']}, enc_algo=None)

2016-04-09T20:42:13+0100 [容器 26333] Python 模块搜索路径:2016-04-09T20:42:13+0100 [容器 26333] /home/osboxes/qbtwebmon 2016-04-09T20:42:13 +0100 [容器 26333] /opt/crossbar/site-packages/crossbar/worker 2016-04-09T20:42:13+0100 [容器 26333] /opt/crossbar/bin 2016-04-09T20:42:13+0100 [容器 26333] /opt/crossbar/lib_pypy/扩展 2016-04-09T20:42:13+0100 [容器 26333] /opt/crossbar/lib_pypy 2016-04-09T20:42:13+0100 [容器 26333] /opt/crossbar/lib-python/2.7 2016-04- 09T20:42:13+0100 [容器 26333] /opt/crossbar/lib-python/2.7/lib-tk 2016-04-09T20:42:13+0100 [容器 26333] /opt/crossbar/lib-python/2.7 /plat-linux2 2016-04-09T20:42:13+0100 [容器 26333] /opt/crossbar/site-packages 2016-04-09T20:42:13+0100 [容器 26333] /home/osboxes/qbtwebmon/wamp_venv /lib/python2.7/site-packages 2016-04-09T20:42:13+0100 [容器 26333] NativeWorkerSession.onUserError 2016-04-09T20:42:13+0100 [控制器 26219] crossbar.error.class_import_failed: 失败导入类 'hello.AppSession' Traceback(最近一次调用最后):文件“/opt/crossbar/site-packages/autobahn/wamp/protocol.py”,第 809 行,在 onMessage on_reply = txaio.as_future(endpoint.fn, *invoke_args, **invoke_kwargs) 文件“/opt/crossbar/site-packages/txaio/tx.py”,第 339 行,在 as_future 中返回可能延迟(有趣,*args, **kwargs) 文件“/opt/crossbar/site-packages/twisted/internet/defer.py”,第 150 行,在可能延迟结果 = f(*args, **kw) 文件“/opt/crossbar/site-packages /crossbar/worker/container.py”,第 192 行,在 start_container_component create_component = _appsession_loader(config) --- --- 文件“/opt/crossbar/site-packages/crossbar/worker/第 150 行,在可能延迟结果中 = f(*args, **kw) 文件“/opt/crossbar/site-packages/crossbar/worker/container.py”,第 192 行,在 start_container_component create_component = _appsession_loader(config) --- --- 文件“/opt/crossbar/site-packages/crossbar/worker/第 150 行,在可能延迟结果中 = f(*args, **kw) 文件“/opt/crossbar/site-packages/crossbar/worker/container.py”,第 192 行,在 start_container_component create_component = _appsession_loader(config) --- --- 文件“/opt/crossbar/site-packages/crossbar/worker/init .py”,第 58 行,在 _appsession_loader 模块 = importlib.import_module(module_name) 文件中“/opt/crossbar/lib-python/2.7/importlib/init .py ”,第 37 行,在 import_module 导入(名称)文件中“/ home/osboxes/qbtwebmon/hello.py”,第 36 行,从 legacy_misc 导入 Legacy_Listener exceptions.ImportError: No module named legacy_misc

2016-04-09T20:42:13+0100 [控制器 26219] 将 TERM 发送到子进程 26272 2016-04-09T20:42:13+0100 [控制器 26219] 等待 26272 退出...

现在经过数小时的谷歌搜索,我意识到 pycurl 在 pypy 中不起作用,这是 crossbar.io 正在运行的,但我想知道是否有办法说“使用 pypy”来运行交叉开关和“使用 cpython”运行项目?

最后,这不是路径问题,我已附加并对此进行了测试。

0 投票
1 回答
645 浏览

websocket - 如何在 autobahn.ws 中获取订阅客户的列表?

现在我正在使用 wamp-protocol、crossbar.io、autobahn.ws 开发聊天。我们只有两个客户的房间。我需要定义其他客户端是否在房间里,如果它在我发布新消息,否则我向 GCM 发出请求。每个房间都有自己的 uri,例如“com.example.chat”。

这就是为什么我需要在指定的 uri 'com.example.chat.' 中获取客户列表。

0 投票
0 回答
379 浏览

python - Crossbar ImportError:无法导入名称 parseWsUrl

  • 创建的虚拟环境:virtualenv my_test
  • 安装横梁:source bin/activate && pip install crossbar
  • 以下是软件包:

    Jinja2==2.8 MarkupSafe==0.23 PyNaCl==1.0.1 PyTrie==0.2 PyYAML==3.11 Pygments==2.1.3 Twisted==16.1.1 argparse==1.2.1 attrs==15.2.0 autobahn==0.13 .1 cbor==1.0.0 cffi==1.5.2 click==6.6 crossbar==0.13.0 cryptography==1.3.1 enum34==1.1.2 idna==2.1 ipaddress==1.0.16 lmdb==0.89 misune==0.7.2 msgpack-python==0.4.7 netaddr==0.7.18 psutil==4.1.0 pyOpenSSL==16.0.0 pyasn1==0.1.9 pyasn1-modules==0.0.8 pycparser==2.14 pyinotify==0.9.6 requests==2.9.1 sdnotify==0.3.0 service-identity==16.0.0 setproctitle==1.1.9 shutilwhich==1.1.0 六==1.10.0 treq==15.1.0 txaio==2.3.1 ujson==1.35 wsaccel==0.6.2 wsgiref==0.1.2 zope.interface==4.1.3

  • 使用以下命令生成 hello 模板:crossbar init --template hello:python --appdir hello

  • 试图运行横杆cd hello; crossbar start

得到错误:

请帮我修复它。我知道 parseWsUrl 在 autobahn.websocket.protocol 中不存在,但这个错误来自交叉库。因此,我该如何解决?或解决方法?

0 投票
1 回答
168 浏览

crossbar - Crossbar Thruway 工人撞车

我有一个带有 PHP Thruway 工作人员的 Crossbar.io 服务器。最近,我开始收到以下错误。现在大约每天发生一次:

有谁知道防止这种情况发生?

如果在这种情况下失败,我如何自动重新启动工作人员?

0 投票
2 回答
118 浏览

python-3.x - 如何获取 Crossbar.io 主机名?

我使用 crossbar.io 编写聊天。我们有几个聊天节点。我需要编写有关每个节点的统计信息,这就是为什么我需要获取运行特定节点的主机名的原因。

是否可以从组件实例中获取主机名?

我使用最新版本的横杆/高速公路和 python 3.4。

如果我使用本地环境,期望得到 - 127.0.0.1。

0 投票
2 回答
1284 浏览

websocket - 带有中间证书和交叉签名证书的 Crossbar SSL/TLS 配置

使用最新版本的Crossbar(0.13,从apt-getUbuntu 14.04 安装)我无法使用 SSL 和中间证书建立连接。

ca_certificates如果我在密钥中没有属性的情况下设置服务器,tls则服务器运行良好,并且可以通过wss协议使用 Google Chrome 建立连接。但是尝试使用thruway建立连接失败并出现以下错误:

无法连接:无法完成 SSL/TLS 握手:stream_socket_enable_crypto():SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:14094410:SSL 例程:ssl3_read_bytes:sslv3 警报握手失败

与Thruway团队交谈似乎是证书问题 - 在我们的实时站点上,我们使用来自 Gandi 的中间和交叉签名证书,这是某些浏览器所需的,因此是一些 open-ssl 实现所必需的。

似乎虽然浏览器很乐意只使用密钥和证书建立 TLS 连接,但 Thruway 需要一个链。然而,以下使用 Gandi 提供的两个证书的配置不适用于ChromeThruway。Chrome 显示错误:

失败:WebSocket 打开握手被取消

使用.crossbar/config.json下面的文件时。那么,这是我的配置、我的证书还是 Open-SSL 堆栈的其他部分的问题?

(下面的文件已被更改,以删除任何潜在的敏感信息,因此可能看起来由于其他原因无法正常工作。如果连接正常,则底层身份验证和其他组件工作正常,因此请保留有关 TLS 实施的答案/评论。注释不是有效的 JSON,但包含在内,因此读者可以看到正在使用的证书文件)

还有其他问题可以解决与此类似的问题@

  • 这一个处理任何 TLS 错误都会终止 WSS 连接而没有有用错误的事实。
  • 这个专门处理握手取消,但在他们的情况下,它是编译中使用的配置不正确的库,在这种情况下与 Crossbar 无关,因为已从apt-get
0 投票
0 回答
140 浏览

python - WAMP 与 Django App 使用 Python 2.7 和 3.4 - 可能吗?

问题的本质是:考虑到代码应该运行并且只有在进行远程过程调用时才被中断,是否可以在支持 Python 2.7 和 3.4 的 Django 应用程序中使用 WAMP 通知?(也就是说,它不仅仅是在等待一个 RPC 的到来)

我们想如何使用 WAMP:该程序有一个 Javascript 前端和一个 Python/Django 后端。我们要做的一件事是在单击前端的按钮时在后端启动一个函数。不过,这有时会花费太多时间,因此我们允许用户通过单击另一个按钮来取消它。这会进行远程过程调用,这将导致函数提前停止(它会更改在函数中检查的变量)。将来也可能对 RPC 或 Pub/Sub 有其他需求。

我们使用autobahn_sync模块让它与 Python 2.7 一起工作,但它使用了 Twisted,它还没有完全移植到 Python 3.x。这就是为什么我们需要另一种方法来让 WAMP 通知在 3.x 上工作。

支持 asyncio 并且从crossbar 文档看来它可以用来代替 Twisted,但是如果不阻塞应该并行运行的代码(代码添加在下面),我们就无法让它工作。而且似乎没有类似 autobahn_sync 使用 asyncio 而不是 Twisted 的东西。

我们是 WAMP 的新手,可能缺少一些东西。

这是我们使用 asyncio 测试的代码(使用 Python 3.4)。它阻止了其余的功能:

我们如何注册主题并从 runner.run 调用返回?在 Python 2.7 测试中,使用 autobahn_sync 我们可以简单地执行以下操作:

0 投票
1 回答
114 浏览

python - 高速公路无法导入 autobahn.wamp.router

运行时出现导入错误crossbar start

我在这里找到了路由器模块的源代码,但我的库中似乎缺少它(我正在运行版本 0.14.0)。

我错过了什么吗?