Apollo GraphQL — обработка событий OnConnect и onDisconnect

#graphql #apollo #apollo-server #graphql-js #graphql-subscriptions

#graphql #apollo #apollo-сервер #graphql-js #graphql-подписки

Вопрос:

Я разрабатываю приложение для чата в реальном времени Apollo GraphQL , и я хочу, чтобы клиенты были в курсе статуса другого клиента.

Это означает, что мне нужно что-то сделать с событиями OnConnect и onDisconnect из объекта subscriptions (который определен в app.js ) и отправлять событие подписки клиентам всякий раз, когда пользователь подключается или отключается.

Я не смог найти объяснения, как это сделать, и был бы признателен за любую помощь.

Ответ №1:

вы должны использовать свойство onDisconnect с context.initPromise следующим образом:

     onDisconnect: async (webSocket, context) => {
      console.log('what is the context?: ', context); 

      try {
        const initialContext = await context.initPromise;
        if (
          initialContext amp;amp;
          typeof initialContext === 'object' amp;amp;
          Reflect.has(initialContext, 'user')
        ) {
          console.log('initialContext: ', initialContext);
        }
      } catch (err) {
        console.log('error', err); // TypeError: 
      }
    }
  },
  

ссылка и link2 для справки.

предупреждение: в настоящее время это работает над моей локальной сборкой, но не над моей производственной сборкой heroku