Я пытаюсь проверить подключение к Интернету с помощью веб-сокетов apollo, цель этого - показать сообщение «вы отключены», когда нет подключения, чтобы пользователь не вводил текст и предполагал, что изменения сохранены (изменения предположительно сохранен на типе), вот часть настройки apollo-link-ws
const wsLink = new WebSocketLink({
uri: `ws://${hostname}${port ? `:${port}` : ''}/subscriptions`,
options: {
reconnect: true,
connectionParams: () => ({
authorization: localStorage.getItem('accelerator-token')
})
}
});
а также
const hasSubscriptionOperation = ({ query: { definitions } }) =>
definitions.some(
({ kind, operation }) =>
kind === 'OperationDefinition' && operation === 'subscription'
);
и вот конфигурация клиента:
const client = new ApolloClient({
link: ApolloLink.split(
hasSubscriptionOperation,
wsLink,
ApolloLink.from([
cleanTypenameLink,
authMiddleware,
errorLink,
stateLink,
createUploadLink()
])
),
cache
});


После некоторого поиска я обнаружил, что могу использовать SubscriptionClient из subscriptions-transport-ws.
export const myClient = new SubscriptionClient(`ws://${hostname}${port ?
`:${port}` : ''}/subscriptions`, {
reconnect: true,
connectionParams: () => ({
authorization: localStorage.getItem('accelerator-token')
})
});
myClient.onConnected(()=>{console.info("connected f client f onConnected")})
myClient.onReconnected(()=>{console.info("connected f client f
reconnected")})
myClient.onReconnecting(()=>{console.info("connected f client f
reconnecting")})
myClient.onDisconnected(()=>{console.info("connected f client f
onDisconnected")})
myClient.onError(()=>{console.info("connected f client f onError")})
export const wsLink = new WebSocketLink(myClient);
Эти методы могут использоваться для определения статуса сети.
onConnected у меня никогда не срабатывает. Подходит ли это вам?
Если вы работаете с React, я нашел этот замечательный пакет сообщества реакция-аполлон-сеть-статус
есть ли другой способ добиться этого? (без использования WS)