mirror of
https://github.com/lukaszraczylo/traefik-llmgateway.git
synced 2026-10-19 05:47:48 +00:00
perf(sse): skip line splitting for single-line data events
This commit is contained in:
@@ -315,12 +315,20 @@ func splitSSELines(b []byte) [][]byte {
|
|||||||
// "\r" of any kind ever reaches the wire from here, regardless of what
|
// "\r" of any kind ever reaches the wire from here, regardless of what
|
||||||
// readSSE upstream of this call did or did not already split it on.
|
// readSSE upstream of this call did or did not already split it on.
|
||||||
func (s *sseWriter) writeData(b []byte) error {
|
func (s *sseWriter) writeData(b []byte) error {
|
||||||
lines := splitSSELines(b)
|
var buf []byte
|
||||||
buf := make([]byte, 0, len(b)+len(lines)*len(sseDataPrefix)+1)
|
if !bytes.ContainsAny(b, "\r\n") {
|
||||||
for _, line := range lines {
|
buf = make([]byte, 0, len(sseDataPrefix)+len(b)+2)
|
||||||
buf = append(buf, sseDataPrefix...)
|
buf = append(buf, sseDataPrefix...)
|
||||||
buf = append(buf, line...)
|
buf = append(buf, b...)
|
||||||
buf = append(buf, '\n')
|
buf = append(buf, '\n')
|
||||||
|
} else {
|
||||||
|
lines := splitSSELines(b)
|
||||||
|
buf = make([]byte, 0, len(b)+len(lines)*len(sseDataPrefix)+1)
|
||||||
|
for _, line := range lines {
|
||||||
|
buf = append(buf, sseDataPrefix...)
|
||||||
|
buf = append(buf, line...)
|
||||||
|
buf = append(buf, '\n')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
buf = append(buf, '\n')
|
buf = append(buf, '\n')
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user