可能的解决方法如下:
确保你的应用程序正在运行,并且响应于端口4000。
检查您的客户端代码是否正确设置了subscription的endpoint,如下所示:
import { SubscriptionClient } from 'subscriptions-transport-ws';
const subscriptionClient = new SubscriptionClient('ws://localhost:4000/subscriptions', { reconnect: true });
请注意,ws://前缀和/subscriptions后缀都非常重要。
import { ApolloServer } from 'apollo-server';
import { SubscriptionServer } from 'subscriptions-transport-ws';
import { execute, subscribe } from 'graphql';
import { createServer } from 'http';
const server = new ApolloServer({ /* ... */ });
const httpServer = createServer(server.getMiddleware({}));
httpServer.listen(4000, () => {
console.log(`� Server ready at http://localhost:4000`);
new SubscriptionServer({
execute,
subscribe,
schema: server.schema
}, {
server: httpServer,
path: '/subscriptions',
});
});
请务必正确使用SubscriptionServer和createServer。