gpt4 book ai didi

websocket - 使用 Apollo 和 GraphQL 设置安全 (wss) websockets 服务器

转载 作者:行者123 更新时间:2023-12-05 08:08:27 27 4
gpt4 key购买 nike

我正在使用以下模式为 Apollo/GraphQL 订阅设置 websockets 连接:

import express from 'express';
import {
graphqlExpress,
graphiqlExpress,
} from 'apollo-server-express';
import bodyParser from 'body-parser';
import cors from 'cors';
import { execute, subscribe } from 'graphql';
import { createServer } from 'http';
import { SubscriptionServer } from 'subscriptions-transport-ws';

import { schema } from './src/schema';

const PORT = 3000;
const server = express();

server.use('*', cors({ origin: `http://localhost:${PORT}` }));

server.use('/graphql', bodyParser.json(), graphqlExpress({
schema
}));

server.use('/graphiql', graphiqlExpress({
endpointURL: '/graphql',
subscriptionsEndpoint: `ws://localhost:${PORT}/subscriptions`
}));

// Wrap the Express server
const ws = createServer(server);
ws.listen(PORT, () => {
console.log(`Apollo Server is now running on http://localhost:${PORT}`);
// Set up the WebSocket for handling GraphQL subscriptions
new SubscriptionServer({
execute,
subscribe,
schema
}, {
server: ws,
path: '/subscriptions',
});
});

如何更改连接以使用安全的 websockets 协议(protocol)?简单地将“ws://”更改为“wss://”是行不通的。

最佳答案

我为 graphql-subscription websocket 安全连接制作了一个示例。

这是链接:https://github.com/mrdulin/apollo-server-express-starter/tree/master/src/subscription/wss-with-nodejs-server

关键是您需要 tlsssl 凭据。

对于开发,您可以使用 openssl 生成自签名凭证。

关于websocket - 使用 Apollo 和 GraphQL 设置安全 (wss) websockets 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49659481/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com