@rxdi/graphql-pubsub
TypeScript icon, indicating that this package has built-in type declarations

0.7.178 • Public • Published

@rxdi Graphql-Pub-Sub Module

More information about Hapi server can be found here Hapi
For questions/issues you can write ticket here
This module is intended to be used with rxdi

Installation and basic examples:

To install this Gapi module, run:
$ npm install @rxdi/graphql-pubsub --save

Consuming @rxdi/graphql-pubsub

Import inside AppModule or CoreModule
import { Module } from "@rxdi/core";
import { HapiModule } from "@rxdi/hapi";
import { GraphQLPubSubModule } from "@rxdi/graphql-pubsub";

@Module({
  imports: [GraphQLPubSubModule.forRoot()],
})
export class CoreModule {}

Correct usage with @rxdi/graphql

import { Module } from "@rxdi/core";
import { HapiModule } from "@rxdi/hapi";
import { GraphQLModule } from "@rxdi/graphql";
import { GraphQLPubSubModule } from "@rxdi/graphql-pubsub";

@Module({
  imports: [
    HapiModule.forRoot({
      hapi: {
        port: 9000,
      },
    }),
    GraphQLModule.forRoot({
      path: "/graphql",
      openBrowser: false,
      writeEffects: false,
      graphiQlPath: "/graphiql",
      graphiqlOptions: {
        endpointURL: "/graphql",
        subscriptionsEndpoint: `${
          process.env.GRAPHIQL_WS_SSH ? "wss" : "ws"
        }://${process.env.GRAPHIQL_WS_PATH || "localhost"}${
          process.env.DEPLOY_PLATFORM === "heroku"
            ? ""
            : `:${process.env.API_PORT || process.env.PORT}`
        }/subscriptions`,
        websocketConnectionParams: {
          token: process.env.GRAPHIQL_TOKEN,
        },
      },
      graphqlOptions: {
        schema: null,
      },
    }),
    GraphQLPubSubModule.forRoot(),
  ],
})
export class CoreModule {}

Options for pubsub server can be defined like so

GraphQLPubSubModule.forRoot({
  remotePubsub: false,
  activateRabbitMQ: false,
  host: "182.10.0.5",
  port: 5672,
  // authentication: AuthService as never,
  subscriptionServerOptions: {
    perMessageDeflate: {
      zlibDeflateOptions: {
        // See zlib defaults.
        chunkSize: 1024,
        memLevel: 7,
        level: 3,
      },
      zlibInflateOptions: {
        chunkSize: 10 * 1024,
      },
      // Other options settable:
      clientNoContextTakeover: true, // Defaults to negotiated value.
      serverNoContextTakeover: true, // Defaults to negotiated value.
      serverMaxWindowBits: 10, // Defaults to negotiated value.
      // Below options specified as default values.
      concurrencyLimit: 10, // Limits zlib concurrency for perf.
      threshold: 1024, // Size (in bytes) below which messages
      // should not be compressed.
    },
  },
});

TODO: Better documentation...

Enjoy ! :)

Readme

Keywords

Package Sidebar

Install

npm i @rxdi/graphql-pubsub

Weekly Downloads

609

Version

0.7.178

License

MIT

Unpacked Size

30.2 kB

Total Files

30

Last publish

Collaborators

  • gapi
  • rxdi