我已经构建了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应用程序存在问题
答案 0 :(得分:2)
结果是我没有配置SSL证书。我按照this guide中的说明创建了一个自签名SSL证书,并将Nginx配置为使用它。现在可以正常工作了。
答案 1 :(得分:0)
Flask-Socketio有很多问题。使用Apache服务器几乎无法使用,但是您正在使用Nginx。请参考以下github链接。
https://github.com/miguelgrinberg/Flask-SocketIO/issues/298#issuecomment-408682588