WebSocket 连接失败:WebSocket 握手期间出错:意外的响应代码:200
WebSocket connection failed: Error during WebSocket handshake: Unexpected response code: 200
我有 Flask 应用程序,我想使用 flask-socketio 来处理带有 gunicorn 和 eventlet 的 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'
})
您正在使用 WebSocket 客户端连接到 Socket.IO 服务器。使用 Socket.IO 客户端,你会没事的。 WebSocket与Socket.IO不一样,后者是在WebSocket之上实现的,使用了不同的协议。
我有 Flask 应用程序,我想使用 flask-socketio 来处理带有 gunicorn 和 eventlet 的 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'
})
您正在使用 WebSocket 客户端连接到 Socket.IO 服务器。使用 Socket.IO 客户端,你会没事的。 WebSocket与Socket.IO不一样,后者是在WebSocket之上实现的,使用了不同的协议。