Skip to content

feat: 优化 SSE emitter 基础能力 - #48

Merged
JanHuang merged 1 commit into
masterfrom
feat/sse-optimize-20261030
Oct 30, 2026
Merged

JanHuang merged 1 commit into
masterfrom
feat/sse-optimize-20261030

Conversation

@JanHuang

Copy link
Copy Markdown
Member

变更

优化 SSE emitter 的公共能力:

  • 新增 AbstractEmitter,统一 send、comment、retry、close 和帧归一化
  • EmitterInterface::send() 支持 object 事件数据
  • SseResponse::emit(EmitterInterface) 允许注入自定义 emitter
  • CGI emitter 继承公共实现,删除重复逻辑
  • 增加 object 与注入 emitter 测试

设计

  • 帧格式、注释帧、重连间隔和关闭状态只保留一份实现
  • 运行时只需实现底层 write()
  • SseResponse::send() 继续作为 CGI 入口,内部委托 emit()
  • 自定义运行时可通过 emit() 复用生产者与错误处理

兼容性

EmitterInterface::send() 的参数类型从 Event|string|array 放宽为 string|array|object。自定义 emitter 实现需要同步放宽参数类型;现有调用方兼容。

验收

PHPUnit: 778 tests, 2056 assertions, OK
PHPStan: No errors

- 新增 AbstractEmitter,统一 send/comment/retry/close 与帧归一化
- EmitterInterface 支持 object 事件数据
- SseResponse 增加 emit(),允许注入自定义 emitter
- 补齐 object 和注入 emitter 测试
@JanHuang
JanHuang merged commit a461285 into master Oct 30, 2026
2 checks passed
@JanHuang
JanHuang deleted the feat/sse-optimize-20261030 branch October 30, 2026 06:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant