Files
2026-10-04 11:00:22 +08:00

3.7 KiB
Raw Permalink Blame History

本地回调测试

正式 NotifyMe 节点仅允许白名单域名 notify.bro3.net 的 HTTPS 地址,旧 allow_localhost 开关已移除。 手动验证可使用审核测试页面创建临时会话,详见说明。 本服务用于本地测试及载体预览;回环地址不会因此加入正式节点白名单。 在仓库目录使用 ComfyUI 的 Python 启动接收服务:

python tools/local_callback_server.py --port 8765 \
  --carrier-dir /path/to/ComfyUI/output/ChickTools \
  --password demo-password

浏览器打开 http://127.0.0.1:8765/,点击“开启监听”,页面通过 WebSocket 显示最近 100 条消息,以及载体解码出的 PNG、MP4 或 WAV。 新结果直接追加,视频保持播放;点击“停止监听”暂停页面更新,再次开启时补上已有结果。接收服务持续接收回调。 完整消息以 JSONL 追加保存到 .local/callback-received.jsonl,可用 --log 指定路径。 重启服务时从磁盘日志恢复消息和计数。按 Ctrl+C 停止服务。

--carrier-dir 指向 ComfyUI 输出载体 PNG 所在目录,--password 是 ChickHideNode 使用的测试密码。服务会扫描新 PNG,解码载体内的原始媒体,并在结果页提供图片、视频或音频控件; 密码只用于本地解码,不会显示在页面或写回媒体文件。

可以使用脚本或 HTTP 客户端向 http://127.0.0.1:8765/callback 直接发送测试 JSON: {"id":"demo-task-001","msg":"Test message"}。 接收页面显示任务 id 和文本,包括中文、换行和空格。 同一任务 id 的多次通知会分别显示;日志中的 event_id 是接收记录编号,与任务 id 分开。 重复运行相同工作流会再次发送通知。当前接收服务用于 HTTP 200 测试: POST /callback 固定返回 200,有效消息写入日志并通过 WebSocket 推送。 NotifyMe 收到 200 后可继续执行后续节点。 请求校验、日志保存或推送发生异常时,该测试接口也返回 200,响应正文保留错误信息; 确认接收结果时同时查看页面记录。页面、健康检查和媒体接口照常响应。

服务接口:POST /callback 接收 {"id":"demo-task-001","msg":"文本"}(兼容省略 id 的旧请求);GET /events 返回消息; GET /health 返回状态和本次启动的接收数量。单次请求正文上限为 1 MiB。 所有测试都无需模型。

自动化验证使用以下命令:

python -X utf8 -m unittest discover -s tests -v
python -X utf8 tools/smoke_comfy.py --comfy /path/to/ComfyUI

测试使用 tests/callback_fixture.py 提供合成 DNS 结果,并仅在隔离测试进程中 将底层连接导向使用临时测试证书的本地 HTTPS 接收器。测试证书只在隔离进程中受信任, 域名白名单、内网地址校验和 TLS 验证仍执行;辅助代码不被正式节点导入。 测试数据不发送到真实域名,也不加载模型。

所有通知示例的 callback_url 默认留空,包括文件名含 local 的旧示例。 手动运行时填写白名单域名下有权使用的实际接口;从旧版升级后请重新创建 NotifyMe 或导入新版示例,并重新填写任务 ID。

视频结果测试:导入 chick_notify_video_example.json。 它使用 ImageBatchTestPattern 生成 8 帧 64×64 测试图案,再连接 ChickHideNode → ChickSaveImage 生成带密码的 MP4 载体,同时将文本发送到 NotifyMe。 启动接收服务时使用同一个 demo-password,并指向载体输出目录,结果页会显示解码后的视频。 通知分支遵守正式域名白名单;隔离测试进程外的回调不会发给本地接收页。