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: default:
} }
data := strings.ReplaceAll(string(p), "\n", "") data := string(p)
if data == "" { if strings.TrimSpace(data) == "" {
return len(p), nil 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() w.client.Flusher.Flush()
return len(p), nil return len(p), nil
} }