Надежный обмен сообщениями в подписке Apollo - PullRequest
0 голосов
/ 03 октября 2019

В настоящее время я тестирую функцию подписки в соответствии с документами, однако я столкнулся с ситуацией, когда некоторые пользователи (около 5 из 40 - все онлайн в одной комнате с приличным подключением к Интернету) пропускают несколько сообщений. Насколько я понимаю, это связано с WebSockets. Существуют ли какие-либо резервные механизмы, которые я смог бы внедрить, чтобы не допустить этого, или это неправильный вариант использования для надежного обмена сообщениями?

Любые замечания по этому вопросу приветствуются. Спасибо.

function Fetch() {
  const { loading, error, data, subscribeToMore } = useQuery(FETCH_QUERY);

  if (loading) return <p>Loading...</p>;
  if (error) return <p>Error :(</p>;

  subscribeToMore({
    document: FETCH_SUBSCRIPTION,
    updateQuery: (prev, { subscriptionData }) => {
      if (!subscriptionData.data) return prev;
      const newItem = subscriptionData.data.items;
      const exists = prev.items.find(({ id }) => id === newItem.id);
      if (exists) return prev;

      return Object.assign({}, prev, {
        items: [...prev.items, newItem]
      })
    }
  });

  return data.items.map((items, index) => {
    <div>{items.content}</div>
  });
}
...