Есть такая функция
func WsHandler_remote_1(w http.ResponseWriter, r *http.Request) {
quit := make(chan int)
conn, err := wsupgrader.Upgrade(w, r, nil)
go db.CreateChanelNotify(conn, 1, quit)
defer conn.Close()
if err != nil {
fmt.Println("Failed to set websocket upgrade: %+v", err)
return
}
for {
t, msg, err := conn.ReadMessage()
if err != nil {
fmt.Println("!!")
break
}
conn.WriteMessage(t, msg)
}
}
Как определить что соединение закрылось (при обрыве связи, или если клиент закрыл браузер)
Ответ
Вам нужно проверить, является ли тип возвращаемой ошибки *websocket.CloseError
t, msg, err := conn.ReadMessage()
if err != nil {
if err, ok := err.(*websocket.CloseError); ok {
log.Printf("connection closed, code: %d, text: %q", err.Code, err.Text)
break
}
break
}
Подробнее:
http://www.gorillatoolkit.org/pkg/websocket#CloseError
http://www.gorillatoolkit.org/pkg/websocket#constants
Комментариев нет:
Отправить комментарий