Страницы

Поиск по вопросам

пятница, 1 марта 2019 г.

Golang: Gorilla 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) } }
Как определить что соединение закрылось (при обрыве связи, или если клиент закрыл браузер)


Ответ

Вам нужно проверить, является ли тип возвращаемой ошибки *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

Комментариев нет:

Отправить комментарий