无法通过wss连接到Flask-Socketio,但可以通过ws工作

时间:2019-01-01 00:32:33

标签: flask socket.io flask-socketio

我已经构建了Flask-Socketio服务器应用程序,当我通过ws使用javascript客户端连接到它时,该应用程序可以按预期运行,但是无论是在本地主机还是在我的Digital Ocean服务器上运行,都无法通过wss进行连接。使用wss,我在控制台(客户端在Heroku上运行)中收到此错误:

index.js:14 WebSocket connection to 'wss://[IP_ADDRESS]/socket.io/? 
EIO=3&transport=websocket' failed: Error in connection establishment: 
net::ERR_CONNECTION_REFUSED

当客户端在localhost上运行时,它将导致此错误:

polling-xhr.js:265 GET https://localhost:5000/socket.io/? 
EIO=3&transport=polling&t=MW6p0Aj net::ERR_SSL_PROTOCOL_ERROR

烧瓶服务器正在运行

socketio.run(app, host='0.0.0.0', port=443) # production

socketio.run(app, host="localhost", port=5000) # localhost

起初,我认为可能是Nginx配置存在问题或服务器端口未打开,但是在Localhost上运行的服务器也会发生相同的问题,所以现在我怀疑Flask-Socketio应用程序存在问题

2 个答案:

答案 0 :(得分:2)

结果是我没有配置SSL证书。我按照this guide中的说明创建了一个自签名SSL证书,并将Nginx配置为使用它。现在可以正常工作了。

答案 1 :(得分:0)

Flask-Socketio有很多问题。使用Apache服务器几乎无法使用,但是您正在使用Nginx。请参考以下github链接。

https://github.com/miguelgrinberg/Flask-SocketIO/issues/298#issuecomment-408682588