Есть ли возможность построить подписку Graphql без отписки? или как включить одновременную подписку graphql? - PullRequest
0 голосов
/ 18 марта 2020

Я включил подписку graphql для своей функции чата с использованием методологии PubSub в Nodejs. ReactJs выступает в качестве внешнего интерфейса. Мой вопрос: Как включить одновременную подписку без отмены подписки в предыдущей комнате чата?

Здесь я приложил образец метода подписки и отписки, который мы использовали в Reactjs.

сервер / распознаватель. js

// Subscription for message
  Subscription: {
    messageAdded: {
     subscribe: withFilter(() => pubsub.asyncIterator('messageAdded'), (payload, variables) => {
        return payload.messageAdded.room === variables.chatroomId;
     })
    }

React / Chatroom. js

componentWillMount(){
   this.unsubscribe = this.subscribe(this.props.rosterGroupId);

}

 componentWillReceiveProps(newProps) {
   if (newProps.rosterGroupId !== this.props.rosterGroupId) {
     if (this.unsubscribe) {
       this.unsubscribe();
     }
     this.unsubscribe = this.subscribe(newProps.rosterGroupId);
   }
 }

 componentWillUnmount() {
   if (this.unsubscribe) {
     this.unsubscribe();
   }
 }

 subscribe = channelId =>
   this.props.getMessages.subscribeToMore({
     document: SUBSCRIPTIONS,
     variables: { chatroomId: Number(channelId) },
     updateQuery: (prev, { subscriptionData }) => {
       if (!subscriptionData) return prev;
       return {
         getMessages: {
           message: [
             ...prev.getMessages.message,
             subscriptionData.data.messageAdded
           ],
           __typename: prev.getMessages.__typename
         }
       };
     }
   }); 

здесь я прикрепил образец экрана рабочего процесса:

текущий рабочий процесс

Я хочу подписать более одного канала чата, не отписываясь от предыдущего. Кто-нибудь поможет мне сделать это возможным. Заранее спасибо.

...