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

Socket.emit正常但socket.on无响应问题求助(附完整代码)

Socket.IO 'new_image_content' 事件监听不触发问题排查

核心问题分析

你的代码存在两个关键问题导致前端的socket.on('new_image_content')无法触发:

1. 事件流向未闭环

folder_watcher.py作为Socket.IO客户端,向服务器发送new_image_content事件后,服务器仅在on_new_image_content函数中打印日志,没有将事件转发给网页客户端。前端监听的是服务器推送的事件,而非folder_watcher直接发送的事件,因此无法接收到消息。

2. 版本兼容性隐患

前端使用的是Socket.IO 4.1.3,若服务器端flask-socketio版本与客户端不匹配(比如服务器用的是旧版),会导致协议不兼容,事件无法正常传递。Socket.IO v4对应的flask-socketio版本应为v5.x。

修复方案

步骤1:修改服务器转发逻辑

更新Server.py中的on_new_image_content函数,将接收到的事件广播给所有连接的网页客户端:

@socketio.on("new_image_content")
def on_new_image_content(data):
    print("Got new image content from folder watcher: " + str(data))
    # 广播事件给所有在线客户端
    socketio.emit('new_image_content', data)

步骤2:确保版本匹配

安装与前端兼容的flask-socketio版本:

pip install flask-socketio==5.3.6

步骤3:调整启动顺序

按以下顺序启动服务:

  1. 启动Server.py
  2. 启动folder_watcher.py
  3. 打开client.html

验证方法

  1. 在images文件夹中添加一张图片,查看服务器控制台是否打印Got new image content from folder watcher:日志
  2. 查看前端浏览器控制台是否输出图片的base64编码,同时imageContainer中是否加载出图片

内容的提问来源于stack exchange,提问作者Dev Sapariya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:15:33