@zhivulinal
Junior (ученик - лузер)

React + Apollo + Websocket. Не обновляется хедер с токеном в WS. Как лечить?

Собираю фронт на вебсокете.
Передаю заголовки с токенами, если при первой загрузке то все норм.
Если перезагрузить страницу, токен тоже валидный.
Если POST, GET тоже все уходит.
Не работает, старое значение токена если его обновить без перезагрузки.
Как лечить? Что делаю не так?

Код такой:
const wsLink = new WebSocketLink({
    uri: `ws://localhost:3000/api`,
    options: {
        reconnect: true,
        connectionParams: {
            Authorization: `Bearer ${token}`,
        },
    }
});

const httpLink = createHttpLink({
    uri: 'http://localhost:3000/api',
    credentials: 'same-origin',
})

const link = split(
    ({ query }) => {
        const { kind, operation } = getMainDefinition(query);
        return kind === 'OperationDefinition' && operation === 'subscription';
    },

    wsLink,
    httpLink,
);

const authMiddleware = new ApolloLink((operation, forward) => {
    operation.setContext(({ headers = {} }) => ({
        headers: {
            ...headers,
            Authorization: `Bearer ${token}`,
        }
    }));

    return forward(operation);
})

const client = new ApolloClient({
    link: authMiddleware.concat(link),
    cache: new InMemoryCache(),
});
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
summer Ярославль
от 100 000 до 140 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
19 апр. 2024, в 23:00
5000 руб./за проект
19 апр. 2024, в 20:43
20000 руб./за проект