You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask SocketIO无法向指定房间发射数据的问题排查

问题原因及解决办法

你的问题核心是服务端未处理客户端发送的join_room请求,导致客户端实际并未加入my_room房间,因此服务端向该房间发送消息时,客户端无法接收。

具体问题点

客户端在连接成功后触发了sio.emit('join_room', 'my_room'),但服务端没有对应事件处理函数来调用join_room()方法,将客户端纳入指定房间。

修复后的服务端代码

补充处理join_room事件的函数,同时修正代码里的语法错误:

from flask import Flask
from flask_socketio import SocketIO, emit, join_room

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

@socketio.on('connect')
def handle_connect():
    print('Client connected')

# 新增join_room事件处理函数,将客户端加入指定房间
@socketio.on('join_room')
def handle_join_room(room_name):
    join_room(room_name)
    print(f'Client joined room: {room_name}')

@app.route('/')
def home():
    return 'home'

@app.route('/send')
def send():
    data = {'foo': 'bar'}
    socketio.emit('receive_data', data, room='my_room')
    print('Sent data:', data)
    return 'sent data'

if __name__ == '__main__':
    socketio.run(app, host='localhost', port=5000)

额外修正点

你原服务端代码存在两处语法错误,会导致运行异常:

  • app = Flask(name) 需改为 app = Flask(__name__)
  • if name == 'main': 需改为 if __name__ == '__main__':

内容的提问来源于stack exchange,提问作者20MillionMax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 23:45:13