wss 龙卷风连接问题

问题描述 投票:0回答:2

龙卷风服务器

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");

我无法弄清楚问题可能是什么以及如何继续。

websocket tornado
2个回答
1
投票

浏览器可能试图向您显示“您接受此自签名证书吗”对话框,但不能,因为 Websocket 连接是不可见的。 要将

wss:
与自签名证书一起使用,您必须首先访问包含该证书的常规 html 页面,以便接受它。


1
投票

tornado 错误消息意味着 http 请求正在发送到 https 端口。我从 http url 加载 javascript,将其更改为 https 解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.