fix: 修复流式响应的 Parse Error 和缓冲问题

主要修改:
1. 从 compression 中间件中排除 SSE 流式响应,避免压缩导致的缓冲
2. 移除导致 Parse Error 的 res.flushHeaders() 调用
3. 改进流式响应的错误处理,发送 SSE 错误事件而不是破坏流
4. 在写入数据前检查流状态,避免写入已销毁的流
5. 优化响应结束时的处理逻辑,确保缓冲区数据正确处理

这些修改确保了流式请求能够正常显示打字机效果,同时保留了 usage token 收集功能。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
shaw
2025-07-23 16:13:07 +08:00
parent 1e372dd365
commit 3553f5cc1f
2 changed files with 78 additions and 41 deletions

View File

@@ -47,11 +47,8 @@ async function handleMessagesRequest(req, res) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('X-Accel-Buffering', 'no'); // 禁用 Nginx 缓冲
// 立即发送响应头,防止缓冲
res.flushHeaders();
// 禁用 Nagle 算法,确保数据立即发送
if (res.socket && res.socket.setNoDelay) {
if (res.socket && typeof res.socket.setNoDelay === 'function') {
res.socket.setNoDelay(true);
}