2014-07-25 63 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解決了問題。