apollographql / graphql-subscriptions

:newspaper: A small module that implements GraphQL subscriptions for Node.js
MIT License
1.6k stars 133 forks source link

Who does the logic to add graphql spec fields on the payload like `__typename`? #262

Open zhaoyi0113 opened 1 year ago

zhaoyi0113 commented 1 year ago

I am exploring this library and trying to understand more about graphql spec level. When the server calls publish, I can see it just pass the payload to subscribers via EmitEmitter. But the client side expects a payload which includes a wrapper of the published payload.

For example, if the publisher publishes a payload like:

{
  topic: "xx", message: ...
}

what the subscriber receive should be something like:

 data: {
   event: {
      topic: "xx", message: ..., __typename: ...
  ...

the data top level field is from graphql spec, every payload should be under it. The event is the operation name from graphql schema. The __typename is the type of the schema. I wonder how this logic get added to the response?