我有Flask应用程序,我想使用flask-socketio来处理带有gunicorn和eventlets的webosockets。
尽管,当我尝试连接测试客户端(http://www.websocket.org/echo.html)时,我收到:
WebSocket connection to 'ws://localhost/socket.io?encoding=text' failed: Error during WebSocket handshake: Unexpected response code: 200
socketio_app.py
from flask import Flask, render_template
from flask_socketio import SocketIO
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app, port=9090, host='0.0.0.0', async_mode='eventlet', debug=True)
@app.route('/socket.io')
def index():
return render_template('index.html')
if __name__ == '__main__':
socketio.run(app)
我以这种方式运行它:
gunicorn -k eventlet -w 1 socketio_app:app -b 0.0.0.0:9090 --error-logfile - --access-logfile - --log-level debug
我应该以其他方式使用它吗?我应该这样手动修改我的回复吗?
@app.route('/socket.io')
def index():
return Response(status=101, headers={
'Connection': 'Upgrade',
'Upgrade': 'websocket'
})
答案 0 :(得分:0)
您正在使用WebSocket客户端连接到Socket.IO服务器。使用Socket.IO客户端,就可以了。 WebSocket与Socket.IO不同,后者在WebSocket之上实现并使用不同的协议。