Flask 实现跨域 WebSocket 访问示例
以下是一个基于 Flask 和 Flask-SocketIO 实现的支持跨域访问的 WebSocket 示例:
from flask import Flask
from flask_socketio import SocketIO, emit
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app, cors_allowed_origins='*') # 允许所有来源的跨域访问
@socketio.on('connect')
def handle_connect():
print('Client connected')
emit('message', {'data': 'Connected'}) # 发送一条消息给客户端
@socketio.on('disconnect')
def handle_disconnect():
print('Client disconnected')
@socketio.on('message')
def handle_message(message):
print('Received message: ' + message['data'])
emit('message', message, broadcast=True) # 将接收到的消息广播给所有连接的客户端
if __name__ == '__main__':
socketio.run(app)
在上面的示例中,我们首先创建了一个 Flask 应用和一个 SocketIO 实例。然后,我们定义了三个事件处理函数:
handle_connect:当客户端连接到 WebSocket 服务器时调用。handle_disconnect:当客户端断开 WebSocket 连接时调用。handle_message:当客户端发送一条消息时调用。
在 handle_connect 函数中,我们发送了一条消息给客户端,以确认连接已建立。在 handle_message 函数中,我们将接收到的消息广播给所有连接的客户端。
最后,我们使用 socketio.run 方法启动服务器。注意,我们没有使用 Flask 的 run 方法,而是使用了 SocketIO 的 run 方法,因为它能够同时处理 WebSocket 和 HTTP 请求。
原文地址: https://www.cveoy.top/t/topic/mC7r 著作权归作者所有。请勿转载和采集!