Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
FanoutGraphqlEpcpPublishesForPubSubEnginePublish,
FanoutGraphqlGripChannelsForSubscription,
FanoutGraphqlTypeDefs,
} from "../FanoutGraphqlApolloConfig";
/**
* WebSocket-Over-HTTP Support requires storage to keep track of ws-over-http connections and subscriptions.
* The Storage objects match an ISimpleTable interface that is a subset of the @pulumi/cloud Table interface. MapSimpleTable is an in-memory implementation, but you can use @pulumi/cloud implementations in production, e.g. to use DyanmoDB.
*/
const webSocketOverHttpStorage = {
connections: MapSimpleTable(),
subscriptions: MapSimpleTable(),
};
// Build a schema from typedefs here but without resolvers (since they will need the resulting pubsub to publish to)
const schema = buildSchemaFromTypeDefinitions(FanoutGraphqlTypeDefs(true));
// This is what you need to support EPCP Publishes (make sure it gets to your resolvers who call pubsub.publish)
const pubsub = EpcpPubSubMixin({
epcpPublishForPubSubEnginePublish: FanoutGraphqlEpcpPublishesForPubSubEnginePublish(
{ schema, subscriptions: webSocketOverHttpStorage.subscriptions },
),
grip: {
url: process.env.GRIP_URL || "http://localhost:5561",
},
// Build a schema from typedefs here but without resolvers (since they will need the resulting pubsub to publish to)
schema,
})(new PubSub());
const apolloServer = new ApolloServer(
FanoutGraphqlApolloConfig({
pubsub,