Подписки Apollo graphql, использующие одну и ту же конечную точку для сервера graphql и конечной точки websocket - PullRequest
1 голос
/ 28 февраля 2020

Мне просто интересно, было ли снижение производительности или недостаток в использовании той же конечной точки для конечной точки graphql, а также для WebSocket. Вы можете увидеть пример кода ниже.

import express = require("express");
import { ApolloServer } from "apollo-server-express";
import bodyParser from "body-parser";
import Knex from "knex";
import { execute, subscribe } from "graphql";
import { SubscriptionServer } from "subscriptions-transport-ws";

// graphql api
import api from "./api";

const { createServer } = require("http");

const app: express.Application = express();

const path = "/graphql";

app.use(bodyParser.json());

const graphqlServer = new ApolloServer(api);

graphqlServer.applyMiddleware({ app, path });

const server = createServer(app);

server.listen(process.env.PORT, err => {
  if (err) {
    throw new Error(err);
  }

  new SubscriptionServer(
    {
      execute,
      subscribe,
      schema: api.schema
    },
    {
      server,
// same as the graphql endpoint
      path
    }
  );
  console.log(
    `the server is running at http://localhost:${process.env.PORT}/graphql`
  );
});
...