【发布时间】:2021-01-14 03:09:38
【问题描述】:
我有一个使用 Apollo Server 和 express 建立的项目。我一直在尝试设置订阅,但它没有发生。我已按照以下链接执行所有步骤:
https://typegraphql.com/docs/subscriptions.html
此外,我最初运行订阅时无法收听。所以我用一个 http 服务器包装了我的 express 应用程序,在我的 app.listen 中,我添加了一个新的订阅服务器,然后订阅正在监听。但是现在,当我运行应该触发订阅的突变时,它不会被触发。我一直在尝试很多东西,但到目前为止,SO 或 Github 上没有任何帮助。
以下是服务器的代码
import express from "express";
import { ApolloServer } from "apollo-server-express";
import cors from "cors";
import { SubscriptionServer } from "subscriptions-transport-ws";
import { execute, subscribe } from "graphql";
import { createServer } from "http";
const main = () => {
const app = express();
app.use(
cors({
origin: "http://localhost:3000",
credentials: true,
})
);
const apolloServer = new ApolloServer({
playground: {
settings: {
"request.credentials": "include",
},
},
schema: await buildSchema({
resolvers: [Resolver1, Resolver2, Resolver3],
validate: false,
}),
context: ({ req, res }) => ({ req, res, redis }),
});
apolloServer.applyMiddleware({
app,
cors: false,
});
const server = createServer(app);
server.listen(4000, async () => {
console.log("Server running on port 4000");
new SubscriptionServer(
{
execute,
subscribe,
schema: await buildSchema({
resolvers: [Resolver1, Resolver2, Resolver3],
validate: false,
}),
},
{
server,
path: "/graphql",
}
);
});
};
如果我做错了什么,请告诉我或引导我朝着正确的方向前进。
【问题讨论】:
-
我也遇到了同样的问题,您找到可行的解决方案了吗?如果是这样,请在这里分享。
标签: typescript graphql apollo-server graphql-subscriptions typegraphql