Проверьте подключение к Интернету с помощью WebSocketLink из apollo-link-ws

Я пытаюсь проверить подключение к Интернету с помощью веб-сокетов 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
});

есть ли другой способ добиться этого? (без использования WS)

daehaai 31.07.2019 13:05
Альтернативные WebSockets для netty/java: удвоение пропускной способности небольших сообщений
Альтернативные WebSockets для netty/java: удвоение пропускной способности небольших сообщений
Этот пост - краткая презентация netty-websocket-http1 - альтернативной netty/java реализации RFC6455 - протокола WebSocket.
Очень простая установка Websocket с помощью Deno без каких-либо пакетов
Очень простая установка Websocket с помощью Deno без каких-либо пакетов
Здесь мы рассмотрим, как можно использовать Websocket в Deno и развернуть его в Deno deploy. Мы будем слушать Websocket, а также отправлять сообщения.
5
1
2 833
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

После некоторого поиска я обнаружил, что могу использовать 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 у меня никогда не срабатывает. Подходит ли это вам?
Yokhen 25.04.2019 05:02

Если вы работаете с React, я нашел этот замечательный пакет сообщества реакция-аполлон-сеть-статус

Другие вопросы по теме