【发布时间】:2014-11-12 19:14:15
【问题描述】:
我有一个使用 Twisted 和 Autobahn 侦听端口 80 上的 WebSocket 连接的服务器。当客户端不想使用 WebSocket 时,我想让它也提供静态 HTML 页面。使用 Twisted 和 Autobahn 是否可以同时做这两件事?
【问题讨论】:
我有一个使用 Twisted 和 Autobahn 侦听端口 80 上的 WebSocket 连接的服务器。当客户端不想使用 WebSocket 时,我想让它也提供静态 HTML 页面。使用 Twisted 和 Autobahn 是否可以同时做这两件事?
【问题讨论】:
我认为您必须在组合中添加 haproxy。如果您只想使用扭曲和高速公路,那么我认为您不能共享端口。话虽如此,我的 websockets 和 web 服务器都在同一个外部端口上监听。我不得不使用 haproxy 来解决这个问题,不过……haproxy 处理入站连接,然后根据它从环境中提取的内容分配连接。每个环境都不一样。基本上,你让 haproxy 运行,然后让你的 web 服务和 web socket 监听不同的私有端口。就我而言,我将我的 Web 套接字服务器放在 127.0.0.1:9000 上,并将我的 Web 服务放在 127.0.0.1:8080 上。然后为 haproxy 的配置创建一个 haproxy.conf 文件,在本例中,类似于:
global
maxconn 100
mode http
frontend myfrontend
bind *:80
acl is_websocket hdr(Upgrade) -i WebSocket
use_backend ws if is_websocket
default_backend mybackend
backend mybackend
server s3 127.0.0.1:8080
backend ws
timeout server 600s
reqrep ^Host:\ .* \0:9000
server ws1 127.0.0.1:9000
我不得不从 haproxy.conf 文件中删除一堆不相关的东西,但这让我明白了。对我来说,只有一个端口从外部可见而不是管理两个端口,这一点很重要。
haproxy 太棒了! -g
【讨论】: