MST

星途 面试题库

面试题:网络编程之Flask - SocketIO中等难度题

在使用Flask - SocketIO实现WebSocket服务时,如何处理客户端与服务端之间不同类型事件(如自定义事件、连接事件、断开连接事件)?请用代码示例说明。
48.1万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试
from flask import Flask
from flask_socketio import SocketIO, send, emit

app = Flask(__name__)
app.config['SECRET_KEY'] ='secret!'
socketio = SocketIO(app)

# 处理连接事件
@socketio.on('connect')
def handle_connect():
    print('Client connected')

# 处理断开连接事件
@socketio.on('disconnect')
def handle_disconnect():
    print('Client disconnected')

# 处理自定义事件
@socketio.on('custom_event')
def handle_custom_event(data):
    print('Received custom event with data:', data)
    emit('custom_response', {'response': 'Server received your custom event'})

if __name__ == '__main__':
    socketio.run(app, debug=True)

在上述代码中:

  1. @socketio.on('connect') 装饰器用于定义处理连接事件的函数 handle_connect,当客户端连接到服务器时会触发此函数。
  2. @socketio.on('disconnect') 装饰器用于定义处理断开连接事件的函数 handle_disconnect,当客户端与服务器断开连接时会触发此函数。
  3. @socketio.on('custom_event') 装饰器用于定义处理自定义事件 custom_event 的函数 handle_custom_event,当服务器接收到名为 custom_event 的事件时会触发此函数,并可以通过 data 参数获取客户端发送的数据。同时,函数内使用 emit 向客户端发送名为 custom_response 的响应事件。