如何让Autobahn WAMP Python服务器和JavaScript客户端协同工作?

0 投票
1 回答
1131 浏览
提问于 2025-04-18 05:08

我有一个Python的Autobahn WAMP服务器(版本0.8.8,应用代码在http://pastebin.com/DfQvaJYF),它和Python客户端运行得很好。服务器和客户端都使用最新的Twisted 13.2。

不过,浏览器里的JavaScript客户端(从CDN获取的autobahn js,应用代码在http://pastebin.com/1GGaRP5e)也是从Autobahn JS的示例中拿来的,它虽然订阅了一个主题,但却没有收到任何消息。哪里都没有错误提示。用Node.js运行客户端时也是同样的情况。

查看服务器的日志,我发现确实没有任何数据被传输——在JavaScript网页客户端或Node.js客户端连接并订阅后,根本没有任何TX WAMP事件。

WAMP服务器运行在8080端口,而JavaScript网页客户端页面则是从8111端口提供的。两者都在同一台主机上。

1 个回答

0

找到了问题的所在。感谢 @oberstet 的评论(见上文)。虽然仅仅把客户端的领域设置为推荐的默认值 realm1 并没有解决问题,但这让我找到了方向。

简单来说,Python WAMP 服务器应该始终明确设置领域。这至少适用于服务器实现了一个子类为 wamp.ApplicationSession 的组件(在 autobahn 网站上的许多或所有示例中都有)。

换句话说,服务器里必须有一个 onConnect 函数来加入一个领域。如果没有这个函数,

  • 一个结构相似的 Python 客户端(不加入领域)是可以工作的
  • 任何设置了领域的客户端(无论是 Python 还是 Javascript)都无法工作

关于解决方案之外的一些猜测:如果能构建一个不需要设置领域的 Javascript 客户端(我用的例子需要明确的领域),那么这样的客户端也许可以工作。也许 Python WAMP 服务器的代码在设置默认领域时有问题。或者可能只是默认值被更改了。我不太清楚。

撰写回答