无法在Firefox上建立Websocket安全连接
我迷上了Firefox。我无法使Websocket正常工作。我使用TornadoWebsocket,并通过以下代码对其进行了初始化:
app = Application([(r'/mypath/ws', WSHandler)])
http_server = HTTPServer(app, ssl_options={
"certfile": "~/certs/websocket.crt",
"keyfile": "~/certs/websocket.key"
})
http_server.listen("443")
然后像这样在Javascript端初始化它:
var WS = new WebSocket("wss://websocket.localhost/mypath/ws");
这段代码在Chrome上运行良好,同时我自己创建了证书并在HTTPS下运行页面。但是Firefox一直在说:
Firefox can't establish a connection to the server at wss://websocket.localhost/mypath/ws.
我用谷歌搜索,发现了太多想法,但没有一个对我有用:(
任何帮助将不胜感激。
-
我通过ProxyPass解决了我的问题。我用Tornado创建了一个非安全的Websocket服务器,并在特定的端口(例如3232)上运行它:
app = Application([(r'/ws/', WSHandler)]) ws_server = HTTPServer(app) ws_server.listen("3232")
然后,我在Apache conf中编写了一个proxypass并使用mod_proxy_wstunnel:
ProxyPass /ws/ ws://127.0.0.1:3232/ws/ ProxyPassReverse /ws/ ws://127.0.0.1:3232/ws/
我在前端上创建Websocket客户端,如下所示:
var WS = new WebSocket("wss://websocket.localhost:81/ws/")
在这种情况下,我可以在带有https的安全连接上创建一个连接,并且我的端口是81,并且我的proxypass将任何Websocket请求重定向到本地侦听的端口3232。这不是一个确切的解决方案,主要是一种解决方法。但这对我来说很好。