【问题标题】:Could not connect to websocket endpoint无法连接到 websocket 端点
【发布时间】:2021-09-12 20:58:38
【问题描述】:

使用 apollo 运行 express 服务器并尝试添加订阅,但我在操场上不断遇到此错误 Could not connect to websocket endpoint ws://localhost:4000/graphql. Please check if the endpoint url is correct.。我不确定我错过了什么。这是服务器代码:

const { ApolloServer, PubSub } = require('apollo-server-express');
const mongoose = require('mongoose');
const app = require('./app');

const resolvers = require('./graphql/resolvers');
const typeDefs = require('./graphql/typeDefs');

const pubsub = new PubSub();
const server = new ApolloServer({
  typeDefs,
  resolvers,
  context: ({ req }) => ({ req, pubsub }),
});

const port = process.env.PORT || 4000;
server.applyMiddleware({ app });

mongoose
  .connect(process.env.DB_URI_DEV, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useCreateIndex: true,
  })
  .then(() => {
    console.log('DB Connected');
    return app.listen(port);
  })
  .then(() => {
    console.log(`We live now boys at ${port}`);
  })
  .catch((error) => {
    console.log(error);
  });

【问题讨论】:

    标签: apollo apollo-server


    【解决方案1】:

    好的,开始工作了。为了启用订阅,我通过 http 的 createServer 创建了一个服务器并将实例传递给 installSubscriptionHandlers。工作代码:

    const pubsub = new PubSub();
      const server = new ApolloServer({
        typeDefs,
        resolvers,
        context: ({ req, connection }) => ({ req, pubsub, connection }),
      });
    
      const httpServer = http.createServer(app);
    
      const PORT = 4000;
      await server.start();
      server.applyMiddleware({ app });
      server.installSubscriptionHandlers(httpServer);
    
      try {
        httpServer.listen(PORT);
        console.log(`server ==> Look alive boys`);
      } catch (error) {
        console.log('Apollo server error');
        throw new Error(error);
      }
    
      try {
        await mongoose.connect(process.env.DB_URI_DEV, {
          useNewUrlParser: true,
          useUnifiedTopology: true,
          useCreateIndex: true,
        });
        console.log('server ===> DB Connected');
      } catch (error) {
        console.log('DB error');
        throw new Error(error);
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-08
      • 2020-05-22
      • 2015-11-10
      • 2018-06-01
      • 2017-01-25
      相关资源
      最近更新 更多