【发布时间】:2023-03-23 20:41:01
【问题描述】:
是否可以运行(安装在樱桃树中)高速公路的 websocket 类以在相同的端口但不同的 URL 上运行?
例如:
- http://localhost:8080/web 到服务器静态内容(html + javascript)
- ws://localhost:8080/websocketA 通过类 WSA 服务一些 WS 通信
- ws://localhost:8080/websocketB 通过 WSB 类服务于一些 WS 通信
这是我的高速公路配置和运行:
self.loop = asyncio.new_event_loop()
asyncio.set_event_loop(self.loop)
factory = WebSocketServerFactory("ws://0.0.0.0:8081", debug = False)
factory.protocol = WSA.SocketClient
coro = self.loop.create_server(factory, "0.0.0.0", 8081)
server = self.loop.run_until_complete(coro)
self.loop.run_forever()
这是我的cherrypy配置&运行:
cherrypy.config.update({
'server.socket_host' : '0.0.0.0',
'server.socket_port' : 80,
})
cherrypy.tree.mount(WebApi.Web(), '/web', {
'/': {
"tools.staticdir.on": True,
"tools.staticdir.root": os.path.dirname(os.path.abspath(__file__)),
"tools.staticdir.dir": "Web",
"tools.staticdir.index": "index.html"
}
})
cherrypy.engine.start()
此时,WebSocket 服务器在 8081 端口上运行,但我想在与 web (8080) 相同的端口上运行它。如果可以的话..
【问题讨论】:
-
我用 wss: 和 https: 做了类似的事情,我运行了 haproxy,它处理了与 Web 浏览器的连接,然后 haproxy 后端指向我的 http 服务器或我的 web 套接字路由器(高速公路)。所以,它们在后端的不同端口上,但是,它们在前端是同一个端口(haproxy 弄清楚哪个是哪个)。
标签: python websocket url-routing cherrypy autobahn