Websocket подключается и тут же отключается, какая может быть причина?

В Postman запрос проходит как надо и токен передается, не понимаю почему у меня сокет отключается, логировал токен, он вроде как вставляется в запрос. Может я всё таки не корректно передаю токен?

import { io, Socket } from "socket.io-client";
import { refreshTokens } from "@/shared/config/redux/slices/auth/authSlice";

let socket: Socket | null = null;

const createSocket = () => {
  const accessToken = localStorage.getItem("accessToken");
  if (!accessToken) {
    throw new Error("not found accessToken");
  }
  console.log("Создание сокета с токеном:", accessToken);
  return io(process.env.NEXT_PUBLIC_WSS_URL, {
    transports: ["websocket", "polling"],
    extraHeaders: {
      Authorization: `Bearer ${accessToken}`,
    },
  });
};

export const connectSocket = async (): Promise<Socket | null> => {
  try {
    let accessToken = localStorage.getItem("accessToken");

    if (!accessToken) {
      accessToken = await refreshTokens();
      if (!accessToken) {
        console.error("Токен отсутствует. Подключение сокета невозможно.");
        return null;
      }
      localStorage.setItem("accessToken", accessToken);
    }

    if (!socket) {
      console.log("Подключение к WebSocket...");

      socket = createSocket();
      socket.on("connection", (socket) => {
        console.log("Headers received:", socket.handshake.headers);
      });

      socket.on("connect", () =>
        console.log("WebSocket подключен:", socket?.id)
      );
      socket.on("disconnect", (reason) => console.log("WebSocket отключен:", reason));
      socket.on("connect_error", (error) =>
        console.error("Ошибка подключения:", error)
      );
      socket.on("auth_error", async () => {
        console.log("Токен истек. Попытка обновить токен...");
        try {
          const newAccessToken = await refreshTokens();
          if (newAccessToken) {
            localStorage.setItem("accessToken", newAccessToken);
            socket?.disconnect();
            socket = createSocket();
          } else {
            console.error("Не удалось обновить токен. Отключаем сокет.");
            disconnectSocket();
          }
        } catch (error) {
          console.error("Ошибка при обновлении токена:", error);
          disconnectSocket();
        }
      });
    }

    return socket;
  } catch (error) {
    console.error("Ошибка при подключении сокета:", error);
    return null;
  }
};

export const disconnectSocket = () => {
  if (socket) {
    socket.disconnect();
    socket = null;
  }
};

export const getSocket = (): Socket | null => socket;

Порядок логов:

Подключение к WebSocket

Создание сокета с токеном: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzQ3NTc4NTgsImlkIjo1MywiZW1haWwiOiJwbGFuZXRzdG91bkBtYWlsLnJ1IiwibmFtZSI6Ilx1MDQyNVx1MDQzMFx1MDQzMVx1MDQzOFx1MDQzMSIsImlzX2FjdGl2YXRlZCI6dHJ1ZSwiaXNfYWRtaW4iOmZhbHNlfQ.Ajqa2Vi-QhDp3nIk9Vc6456hfgbfg7n67n=

WebSocket отключен: io server disconnect

Ответы (0 шт):