2014-07-25 62 views
1

龙卷风服务器WSS龙卷风连接问题

ssl_options = { 
     "certfile": "server.crt", 
     "keyfile": "server.key" 
} 
application=Application() 
server=tornado.httpserver.HTTPServer(application,xheaders=True,ssl_options=ssl_options) 
server.listen(tornado.options.options.port) 
tornado.ioloop.IOLoop.instance().start() 

JS的WebSocket

webSocket = new WebSocket("wss://" + location.hostname + ":8888/socket"); 

连接没有打开,并且open()方法不会被调用,并且没有任何错误。

当从JS

webSocket = new WebSocket("ws://" + location.hostname + ":8888/socket"); 

不安全插座的连接,我得到以下错误尝试:

Tornado: 

    [W 140725 11:35:35 iostream:845] SSL Error on 11 ('192.168.0.72', 54554): [Errno 1] _ssl.c:504: error:1407609C:SSL routines:SSL23_GET_CLIENT_HELLO:http request 


JS: 

    WebSocket connection to 'ws://192.168.0.72:8888/socket' failed: Connection closed before receiving a handshake response 

然而,当我从龙卷风删除ssl_options,并尝试从JS不安全的连接,它工作正常。

Tornado: 

    server = tornado.httpserver.HTTPServer(application) 

JS: 

    webSocket = new WebSocket("ws://" + location.hostname + ":8888/socket"); 

我无法弄清楚问题可能出在哪里以及如何进行。

回答

1

浏览器可能试图告诉你“你接受这个自签名证书”对话框,但不能,因为websocket连接是不可见的。要将wss:用于自签名证书,您必须首先访问具有该证书的常规HTML页面,以便您可以接受该页面。

+0

我已经接受了证书,问题是我试图通过http访问网页而不是https。谢谢你的帮助。 – khizerbajwa

1

龙卷风错误消息表示http请求正在发送到https端口。我正在从http url加载JavaScript,将其改为https解决了问题。