Skip to content

Commit fa9c42d

Browse files
authored
Merge pull request #76 from mutablelogic/v4
Updated so ping only happens when no event
2 parents 88fc1e7 + e8803f3 commit fa9c42d

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

pkg/httpresponse/textstream.go

+1
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ func NewTextStream(w http.ResponseWriter, tuples ...string) *TextStream {
8787
return
8888
}
8989
self.emit(evt)
90+
ticker.Reset(defaultKeepAlive)
9091
case <-ticker.C:
9192
self.err = errors.Join(self.err, self.emit(&textevent{strPing, nil}))
9293
ticker.Reset(defaultKeepAlive)

pkg/httpresponse/textstream_test.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ func Test_textstream_001(t *testing.T) {
1717
resp := httptest.NewRecorder()
1818
ts := httpresponse.NewTextStream(resp)
1919
assert.NotNil(ts)
20-
t.Log(ts)
2120
assert.NoError(ts.Close())
2221
})
2322

@@ -33,21 +32,22 @@ func Test_textstream_001(t *testing.T) {
3332
assert.Equal("event: ping\n\n", resp.Body.String())
3433
})
3534

36-
t.Run("EventNoData", func(t *testing.T) {
35+
t.Run("EventDataAfterPing", func(t *testing.T) {
3736
resp := httptest.NewRecorder()
3837
ts := httpresponse.NewTextStream(resp)
3938
assert.NotNil(ts)
4039

40+
time.Sleep(200 * time.Millisecond)
4141
ts.Write("foo")
4242

4343
time.Sleep(1 * time.Second)
4444
assert.NoError(ts.Close())
4545
assert.Equal(100, resp.Code)
4646
assert.Equal("text/event-stream", resp.Header().Get("Content-Type"))
47-
assert.Equal("event: foo\n\n"+"event: ping\n\n", resp.Body.String())
47+
assert.Equal("event: ping\n\n"+"event: foo\n\n", resp.Body.String())
4848
})
4949

50-
t.Run("EventData", func(t *testing.T) {
50+
t.Run("EventDataNoPing", func(t *testing.T) {
5151
resp := httptest.NewRecorder()
5252
ts := httpresponse.NewTextStream(resp)
5353
assert.NotNil(ts)
@@ -58,7 +58,7 @@ func Test_textstream_001(t *testing.T) {
5858
assert.NoError(ts.Close())
5959
assert.Equal(100, resp.Code)
6060
assert.Equal("text/event-stream", resp.Header().Get("Content-Type"))
61-
assert.Equal("event: foo\n"+"data: \"bar\"\n\n"+"event: ping\n\n", resp.Body.String())
61+
assert.Equal("event: foo\n"+"data: \"bar\"\n\n", resp.Body.String())
6262
})
6363

6464
t.Run("EventDataData", func(t *testing.T) {
@@ -72,7 +72,7 @@ func Test_textstream_001(t *testing.T) {
7272
assert.NoError(ts.Close())
7373
assert.Equal(100, resp.Code)
7474
assert.Equal("text/event-stream", resp.Header().Get("Content-Type"))
75-
assert.Equal("event: foo\n"+"data: \"bar1\"\n"+"data: \"bar2\"\n\n"+"event: ping\n\n", resp.Body.String())
75+
assert.Equal("event: foo\n"+"data: \"bar1\"\n"+"data: \"bar2\"\n\n", resp.Body.String())
7676
})
7777

7878
}

0 commit comments

Comments
 (0)