Wenn ich einen Browser schließe, möchte ich einen Websocket in 3 Sekunden statt 1 Minute trennen. Die folgenden schreiben einfach weiter in eine void ohne Fehler, bis die tcp ip timeout ich denke, nicht die SetWriteDeadline.Wie verwende ich ws.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)
Ich brauche für dieses err
write tcp [::1]:8080->[::1]:65459: write: broken pipe
warten, bevor sie schließlich die Verbindung schließt, die etwa eine Minute dauert oder mehr.