From 30e8376a8d1a1881181dbefb4e0420d0b0924006 Mon Sep 17 00:00:00 2001 From: xuges Date: Mon, 21 Jul 2025 17:52:01 +0800 Subject: [PATCH 1/2] Add sse decoder retry unit test. --- sse-decoder_test.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/sse-decoder_test.go b/sse-decoder_test.go index 068107b..feba0ef 100644 --- a/sse-decoder_test.go +++ b/sse-decoder_test.go @@ -66,6 +66,26 @@ data assert.Equal(t, events[0].Id, "123456ABCabc789010") } +func TestDecodeSingle4(t *testing.T) { + events, err := Decode(bytes.NewBufferString( + ` +id:123456ABCabc789010 +retry: 6 +event: message123 +: we can append data +data:this is a text +data: a very nice one +data: +data +: ending with a comment`)) + + assert.NoError(t, err) + assert.Len(t, events, 1) + assert.Equal(t, events[0].Event, "message123") + assert.Equal(t, events[0].Id, "123456ABCabc789010") + assert.Equal(t, events[0].Retry, uint(6)) +} + func TestDecodeMulti1(t *testing.T) { events, err := Decode(bytes.NewBufferString( ` From d84c672db11227ac59ab93ac16bc1eb7ab23fdb9 Mon Sep 17 00:00:00 2001 From: xuges Date: Tue, 22 Jul 2025 12:17:11 +0800 Subject: [PATCH 2/2] Fix sse decoder not assign retry value. --- sse-decoder.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sse-decoder.go b/sse-decoder.go index da2c2d4..5f6694b 100644 --- a/sse-decoder.go +++ b/sse-decoder.go @@ -7,6 +7,7 @@ package sse import ( "bytes" "io" + "strconv" ) type decoder struct { @@ -99,7 +100,10 @@ func (d *decoder) decode(r io.Reader) ([]Event, error) { // then interpret the field value as an integer in base ten, and set the event stream's // reconnection time to that integer. // Otherwise, ignore the field. - currentEvent.Id = string(value) + if len(value) != 0 && '0' <= value[0] && value[0] <= '9' { + num, _ := strconv.ParseUint(string(value), 10, 0) + currentEvent.Retry = uint(num) + } case "data": // Append the field value to the data buffer, dataBuffer.Write(value)