fix: preserve newlines in SSE streaming for Markdown rendering

This commit is contained in:
大森 2026-05-10 15:40:07 +08:00
parent 5d9def5381
commit 8a2b5a0d5d

View File

@ -41,12 +41,16 @@ func (w *sseWriter) Write(p []byte) (n int, err error) {
default:
}
data := strings.ReplaceAll(string(p), "\n", "")
if data == "" {
data := string(p)
if strings.TrimSpace(data) == "" {
return len(p), nil
}
fmt.Fprintf(w.client.Writer, "data: %s\n\n", data)
lines := strings.Split(data, "\n")
for _, line := range lines {
fmt.Fprintf(w.client.Writer, "data: %s\n", line)
}
fmt.Fprint(w.client.Writer, "\n")
w.client.Flusher.Flush()
return len(p), nil
}