订阅的GraphQLObjectType

订阅的GraphQLObjectType,graphql,graphql-js,express-graphql,graphql-subscriptions,graphql-schema,Graphql,Graphql Js,Express Graphql,Graphql Subscriptions,Graphql Schema,我使用Express实现了一个GraphQL服务器,但GraphQL订阅类型的设置有问题 我正在开发一个实时聊天应用程序,并试图在创建新消息后发布一个事件,但我不知道如何为订阅创建GraphQLObjectType 我尝试使用“graphql订阅”中的PubSub和WithFilter,但我不知道如何使用 const pubsub = new PubSub(); const NEW_MESSAGE = 'NEW_MESSAGE'; const Subscription = new GraphQ

我使用Express实现了一个GraphQL服务器,但GraphQL订阅类型的设置有问题

我正在开发一个实时聊天应用程序,并试图在创建新消息后发布一个事件,但我不知道如何为订阅创建GraphQLObjectType

我尝试使用“graphql订阅”中的PubSub和WithFilter,但我不知道如何使用

const pubsub = new PubSub();
const NEW_MESSAGE = 'NEW_MESSAGE';

const Subscription = new GraphQLObjectType({
  name: 'Subscription',
  fields: () => ({
    newMessage: {
      subscribe: withFilter(() => pubsub.asyncIterator(NEW_MESSAGE), (payload, args) => {
        return payload.recipientId === args.recipientId;
      }),
      **type: ?**
    }
  })
});
以下是我创建的消息类型:

const MessageType = new GraphQLObjectType({
      name: 'Message',
      fields: () => ({
        id: { type: GraphQLID },
        message: { type: GraphQLString },
        senderId: { type: GraphQLID },
        recipientId: { type: GraphQLID }
      })
    });
以及sendMessage:

const Mutation = new GraphQLObjectType({
      name: 'Mutation',
      fields: () => ({
        sendMessage: {
          type: MessageType,
          args: {
            message: { type: GraphQLString },
            senderId: { type: GraphQLID },
            recipientId: { type: GraphQLID }
          },
          resolve: (parent, args) => {
            const { message, senderId, recipientId } = args;
            const msg = new Message({ message, senderId, recipientId });

            pubsub.publish(NEW_MESSAGE, {
              recipientId,
              newMessage: message
            });

            return msg.save();
          }
        }
      })
    });

我使用订阅的方式是创建订阅服务器并在客户端订阅它。看看这个,你明白了。

请保留答案字段,以便提供完整的信息解决方案。如果你有一个参考链接,直接在你的答案中发布该链接的相关信息。注意链接可能会过时。@Ronald我知道,但这是YouTube视频的链接,所以我发布了它。