【问题标题】:how to make Autobahn WAMP Python server & Javascript client work together?如何使 Autobahn WAMP Python 服务器和 Javascript 客户端协同工作?
【发布时间】:2014-05-02 15:07:06
【问题描述】:

我有一个 Python Autobahn WAMP 服务器(v. 0.8.8,http://pastebin.com/DfQvaJYF 的应用程序代码)与 Python 客户端配合良好。使用最新的 Twisted 13.2。用于服务器和客户端。

但是,浏览器 javascript 客户端(来自 CDN 的 autobahn js,应用代码http://pastebin.com/1GGaRP5e)同样取自 Autobahn JS 示例,订阅了一个主题,但不接收任何消息。任何地方都没有错误。使用 Node.js 运行客户端时也会发生同样的情况。

检查服务器日志,我可以看到确实没有传输任何内容 - 在 js web 或 Node.js 客户端连接和订阅之后,没有任何 TX WAMP EVENT。

WAMP 服务器在 8080 端口上运行,JS Web 客户端页面从 8111 端口提供服务。两者都在同一主机上。

【问题讨论】:

  • 尝试连接第二个客户端(也订阅)。默认情况下,发布者会话本身不接收事件。
  • 啊,您正在从服务器中的循环发布。所以上述评论不适用。另一件事:在 Python 方面,您将使用隐式默认领域“realm1”,而在 JS 中,您使用“tutorialpubsub”......尝试将后者设为“realm1”。
  • 谢谢。在下面回答自己之后,我检查了高速公路代码,在我看来,高速公路将默认领域设置为无,而不是您建议的“领域 1”。还是我误解了你的意思?

标签: javascript python autobahn wamp-protocol


【解决方案1】:

发现问题。感谢@oberstet 的评论(见上文)。虽然只是将客户端领域设置为建议的默认值 realm1 不起作用,但这让我找到了解决方案。

简短而简单的答案是Python WAMP 服务器应始终显式设置领域。这至少适用于服务器实现子类 wamp.ApplicationSession 的组件(高速公路网站上的许多或所有示例)。

换句话说,在服务器中必须有一个 onConnect 函数来加入一个领域。没有它,

  • 类似构造的 Python 客户端(不加入领域)可以工作
  • 设置领域的任何(Python 或 Javascript)客户端都不会工作

解决方案之外的一些猜测:如果可以构建一个无需设置领域即可工作的 Javascript 客户端(我使用的示例需要显式领域),那么这样的客户端也许也可以工作。也许 Python WAMP 服务器代码在其默认领域的设置中存在错误。或者也许只是默认值已更改。我不知道。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 2013-02-27
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    相关资源
    最近更新 更多