阿波罗订阅中可靠的消息传递

时间:2019-10-03 16:01:00

标签: websocket react-apollo graphql-subscriptions

目前,我正在根据文档测试“订阅”功能,但是,我遇到了这样一种情况,即某些用户(约40个用户中有5个-所有在线用户都在同一个房间中并且互联网连接良好)会丢失一些消息。据我了解,这与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>
  });
}

0 个答案:

没有答案