以下是一个基于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请求。

flask实现一个支持跨域访问的websocket例子

原文地址: https://www.cveoy.top/t/topic/bcBk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录