当我关闭浏览器时,我想在 3 秒而不是 1 分钟内断开 websocket。以下只是继续写入一个没有错误的空白,直到我猜的 tcp ip 超时,而不是 SetWriteDeadline。
f := func(ws *websocket.Conn) {
for {
select {
case msg := <-out:
ws.SetWriteDeadline(time.Now().Add(3 * time.Second))
if _, err := ws.Write([]byte(msg)); err != nil {
fmt.Println(err)
return
}
case <-time.After(3 * time.Second):
fmt.Println("timeout 3")
return
}
}
}
return websocket.Handler(f)
我需要等待这个错误
write tcp [::1]:8080->[::1]:65459: write: broken pipe
在它最终关闭连接之前,这大约需要一分钟或更长时间。
慕标琳琳
相关分类