如何设置同时监听同一端口的Autobahn发布/订阅服务器和Autobahn Web服务器

3
我最近发现了Autobahn Python和JS作为一种舒适的方法来建立一个发布/订阅服务器和相应的客户端,即使是通过RPC调用。
在查看教程后,我设置了一个测试版本,其中websocket服务器和web服务器在同一端口上运行。服务器通过websockets定期向客户端发送数据。用户获取的html位于本地主机根目录下。所有这些都很好地工作。
然而,我想要实现的是:设置一个发布/订阅服务器和一个监听同一端口的web服务器。
教程仅显示如何在两个不同的端口上设置它们(如http://autobahn.ws/python/tutorials/pubsub所示)。
我对Python和特别是Autobahn和Twisted非常陌生。任何建议都将非常好!
非常感谢!
马克
3个回答

1

当使用WAMP时,同时在同一端口监听HTTP和WS服务器时,您需要手动启动WampServerFactory实例,如此处所述。

factory = WampServerFactory("ws://localhost:8080")
factory.protocol = YourServerProtocolClass
factory.startFactory() # <--- need to call this manually
resource = WebSocketResource(factory)
root = File(".")
root.putChild("ws", resource)

更多详情请参见完整示例


文件已经移动到这里,因为Autobahn已经更新为WAMPv2。 - Bugster

1
当然可以。使用Autobahn,您可以在一个端口上同时运行WAMP/WebSocket服务器和普通的Web服务器。这里是一个纯WebSocket的示例,这里是一个WAMP的示例
免责声明:我是Autobahn的作者,也在Tavendo工作。

你好Tobias Oberstein, 能否提供一些关于此事的额外信息吗? 请查看我的最新回答,您可以查看源代码。 谢谢! - user2323407
现在可以在此处找到示例:https://github.com/tavendo/AutobahnPython/tree/master/examples - EmpireJones

0

我会将nginx作为前端,将每个调用转发到pubsub或web...最近的Nginx支持WebSocket转发。

或者你可以使用Twisted编写类似的东西 :)

另一个选择是将autobahn.websocket.WebSocketServerProtocol及其子类autobahn.wamp.WampServerProtocol适应于Twisted.web。这应该是可能的。


谢谢 monoid 的建议。我会查看这些类并看看我能实现什么。Nginx 绝对是一个选择,但我更喜欢另一种方式 : )。我仍然希望找到一个好的解决方案,而不是重写 autobahn 类。使用 twisted 和 autobahn 可以在同一端口上运行 websocket 和 webserver,因此肯定有一种方法可以做到 pub/sub :)。 - user2323407

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接