chore(context): http.CloseNotify is deprecated, use context.Done instead

Signed-off-by: 0xff-dev <stevenshuang521@gmail.com>
This commit is contained in:
0xff-dev 2024-06-13 18:55:00 +08:00
parent 626d55b0c0
commit 2591a34c1d
2 changed files with 5 additions and 7 deletions

View File

@ -1137,10 +1137,9 @@ func (c *Context) SSEvent(name string, message any) {
// indicates "Is client disconnected in middle of stream" // indicates "Is client disconnected in middle of stream"
func (c *Context) Stream(step func(w io.Writer) bool) bool { func (c *Context) Stream(step func(w io.Writer) bool) bool {
w := c.Writer w := c.Writer
clientGone := w.CloseNotify()
for { for {
select { select {
case <-clientGone: case <-c.Request.Context().Done():
return true return true
default: default:
keepOpen := step(w) keepOpen := step(w)

View File

@ -2517,10 +2517,6 @@ func (r *TestResponseRecorder) CloseNotify() <-chan bool {
return r.closeChannel return r.closeChannel
} }
func (r *TestResponseRecorder) closeClient() {
r.closeChannel <- true
}
func CreateTestResponseRecorder() *TestResponseRecorder { func CreateTestResponseRecorder() *TestResponseRecorder {
return &TestResponseRecorder{ return &TestResponseRecorder{
httptest.NewRecorder(), httptest.NewRecorder(),
@ -2531,6 +2527,7 @@ func CreateTestResponseRecorder() *TestResponseRecorder {
func TestContextStream(t *testing.T) { func TestContextStream(t *testing.T) {
w := CreateTestResponseRecorder() w := CreateTestResponseRecorder()
c, _ := CreateTestContext(w) c, _ := CreateTestContext(w)
c.Request, _ = http.NewRequest(http.MethodGet, "", nil)
stopStream := true stopStream := true
c.Stream(func(w io.Writer) bool { c.Stream(func(w io.Writer) bool {
@ -2550,10 +2547,12 @@ func TestContextStream(t *testing.T) {
func TestContextStreamWithClientGone(t *testing.T) { func TestContextStreamWithClientGone(t *testing.T) {
w := CreateTestResponseRecorder() w := CreateTestResponseRecorder()
c, _ := CreateTestContext(w) c, _ := CreateTestContext(w)
done, cancel := context.WithCancel(context.Background())
c.Request, _ = http.NewRequestWithContext(done, http.MethodGet, "", nil)
c.Stream(func(writer io.Writer) bool { c.Stream(func(writer io.Writer) bool {
defer func() { defer func() {
w.closeClient() cancel()
}() }()
_, err := writer.Write([]byte("test")) _, err := writer.Write([]byte("test"))