#golang #websocket
Есть такая функция 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) } } Как определить что соединение закрылось (при обрыве связи, или если клиент закрыл браузер)
Ответы
Ответ 1
Вам нужно проверить, является ли тип возвращаемой ошибки *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
Комментариев нет:
Отправить комментарий