v0.0.17.3 Переработан websocket, добавлена обработка ping/pong
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
madipo2611 2025-08-11 16:09:03 +03:00
parent 2145affdac
commit 68577d1878

View File

@ -54,23 +54,30 @@ func (h *ChatHandler) HandleWebSocket(w http.ResponseWriter, r *http.Request) {
log.Printf("WebSocket: токен из куки: %s", token) log.Printf("WebSocket: токен из куки: %s", token)
} }
// 2. Если нет в куках, проверяем заголовок Authorization // Из заголовка Authorization
if token == "" { if authHeader := r.Header.Get("Authorization"); authHeader != "" {
authHeader := r.Header.Get("Authorization")
if authHeader != "" {
token = strings.TrimPrefix(authHeader, "Bearer ") token = strings.TrimPrefix(authHeader, "Bearer ")
log.Printf("WebSocket: токен из заголовка: %s", token) }
// Из параметра URL
if token == "" {
token = r.URL.Query().Get("token")
}
// Из куков
if token == "" {
if cookie, err := r.Cookie("accessToken"); err == nil {
token = cookie.Value
} }
} }
// 3. Если токен не найден - возвращаем 401
if token == "" { if token == "" {
log.Println("WebSocket: токен не найден ни в куках, ни в заголовках") log.Println("WebSocket: токен не найден")
http.Error(w, "Token is required", http.StatusUnauthorized) http.Error(w, "Token is required", http.StatusUnauthorized)
return return
} }
// 4. Валидация токена // Валидация токена
userID, err := h.tokenAuth.ValidateAccessToken(token) userID, err := h.tokenAuth.ValidateAccessToken(token)
if err != nil { if err != nil {
log.Printf("WebSocket: ошибка валидации токена: %v", err) log.Printf("WebSocket: ошибка валидации токена: %v", err)