/* * Docs: https://typegraphql.com/docs/subscriptions.html */ import { Resolver, Subscription, Args, Mutation } from '@nestjs/graphql'; import { Message } from './chat.schema'; import { SendMessageInput } from './chat.input'; import pubsub from '../subscriptions/pubsub'; const newMessage = 'newMessage'; @Resolver() export class ChatResolver { @Mutation(() => Message) async sendMessage(@Args('input') input: SendMessageInput) { const message = { sent: new Date(), ...input, }; await pubsub.publish(newMessage, { [newMessage]: message }); return message; } @Subscription(() => Message, { name: newMessage, }) newMessage(): any { return pubsub.asyncIterator(newMessage); } }