这个错误提示表明,您没有安装 eventlet 或 gevent 和 gevent-websocket 库。这些库提供了在 Flask 应用程序中使用 WebSocket 的支持,并且可以提高性能。
要解决此问题,请根据您的需求选择其中一个库进行安装:
- 安装 eventlet 库:运行
pip install eventlet
命令。 - 安装 gevent 和 gevent-websocket 库:运行
pip install gevent gevent-websocket
命令。
安装完毕后,在 Flask 应用程序中引入相应的库即可开始使用 WebSocket。例如,在使用 eventlet 的情况下,可以这样修改 Flask 应用程序代码:
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app, async_mode='eventlet')
@app.route('/')
def index():
return render_template('index.html')
@socketio.on('message')
def handle_message(message):
print('received message: ' + message)
# Send the received message back to the client:
emit('response', {'data': message})
if __name__ == '__main__':
socketio.run(app)
注意到在创建 SocketIO 实例时,我们传递了 async_mode='eventlet'
参数来指定使用 eventlet 异步模式。如果您选择使用 gevent 和 gevent-websocket,则需要将其替换为相应的参数值。
完成以上步骤后,WebSocket 应该已经正常工作了。