Я включил подписку 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
}
};
}
});
здесь я прикрепил образец экрана рабочего процесса:
текущий рабочий процесс
Я хочу подписать более одного канала чата, не отписываясь от предыдущего. Кто-нибудь поможет мне сделать это возможным. Заранее спасибо.