龙卷风服务器
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");
我无法弄清楚问题可能是什么以及如何继续。
答案 0 :(得分:1)
浏览器可能会试图向您显示"您是否接受此自签名证书"对话框,但不能,因为websocket连接是不可见的。要将wss:
与自签名证书一起使用,您必须首先访问包含该证书的常规html页面,以便您接受它。
答案 1 :(得分:1)
tornado错误消息表示正在向https端口发送http请求。我正在从http网址加载javascript,将其更改为https解决了问题。