NodeJS @fastify/WebSocket和HTTPS问题

hof1towb  于 12个月前  发布在  Node.js
关注(0)|答案(1)|浏览(136)

我正在用fastify和@fastify/WebSocket编写一个node应用程序。在我使用http协议之前,它在本地和远程服务器上都能正常工作。一旦我切换到https,即使fastify继续工作(https),也无法再连接到ws/wss。这是我的代码:
节点文件:

const config = {
    privKey: process.env.PRIV_KEY,
    certKey: process.env.CERT_KEY,
    https: (process.env.HTTPS === '1' ? true : false),
    domains: process.env.DOMINI,
    port: process.env.PORT
}

const fastify = config.https === false
    ? require("fastify")({ serverTimeout: 60 * 60 * 1000, logger: true })
    : require("fastify")({
        serverTimeout: 60 * 60 * 1000,
        https: {
            key: fs.readFileSync(config.privKey),
            cert: fs.readFileSync(config.certKey),
        }
    });

fastify.register(require("@fastify/cors"), {
    origin: config.domains,
});

const WebSocket = require('@fastify/websocket'); 
fastify.register(WebSocket);

fastify.register(async function (fastify) {
    fastify.get('/live', { websocket: true }, (connection, request) => {

        connection.socket.on('message', message => {
            try {
                connection.socket.send('You are connected...')

            } catch(error) {
                console.log(error)
            }
        })
    });
});

const start = () => {
    try {
        fastify.listen({
            host: '0.0.0.0',
            port: config.port,
            listenTextResolver: (address) => { return `Server is listening at ${address}` }
        });

    } catch (err) {
        fastify.log.error(err);
        process.exit(1);
    }
};

start();

字符串
搜索我找不到任何类似的问题,也猜不出问题在哪里。即使gpt 4也帮不上忙。防火墙在tcp配置上打开。端口和证书是有效的(fastify在https上工作正常)。
它看起来像WebSocket不能检测到它运行在fastify的https上。
有什么需要帮忙的吗?谢谢
Simone

2j4z5cfb

2j4z5cfb1#

这个问题似乎与SSL/TLS证书有关。使用mkcert在本地生成证书可以使wss://端点工作,这表明这可能是本地和开发环境的可行方法。
除了使用与HTTPS设置相同的证书之外,您是否遇到过生产环境的其他解决方案?

相关问题