Собираю фронт на вебсокете.
Передаю заголовки с токенами, если при первой загрузке то все норм.
Если перезагрузить страницу, токен тоже валидный.
Если 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(),
});