Страницы

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

четверг, 9 января 2020 г.

Golang: Gorilla websocket, состояние подключения

#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

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

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