Nodejs Websocket 服务器(使用 ws)无法安全运行



我目前正在安全域上运行一个websocket服务器(使用ssl(,但由于某种原因,我无法让服务器实际使用wss而不是ws。

下面的代码是我如何创建Websocket服务器的。

const httpsServer = https.createServer({
cert: fs.readFileSync(`/etc/letsencrypt/live/example.com/cert.pem`, 'utf8'),
key: fs.readFileSync(`/etc/letsencrypt/live/example.com/privkey.pem`, 'utf8'),
ca: fs.readFileSync(`/etc/letsencrypt/live/example.com/chain.pem`, 'utf8'),
})
const wss = new WebSocket.Server({
port: [port],
perMessageDeflate: false,
server: httpsServer,
})
wss.on('connection', (ws: ExtraWS, req) => {
ws.id = [id]
ws.send(`Connected to: ${req.socket.remoteAddress}:${req.socket.remotePort}`)
ws.on('message', msg => {
ws.send(`Recieved: '${msg}'`)
})
})

无论出于何种原因,此套接字仅在ws://example.com:[port]可用,而不是在wss://example.com:[port]可用。如果有人知道我在这里做错了什么,请告诉我。

我找到了答案。问题是我在Socket服务器中指定了端口,而不是在httpsServer.listen((.中指定

这是修改后的代码:

const httpsServer = https.createServer({
cert: fs.readFileSync(`/etc/letsencrypt/live/example.com/cert.pem`, 'utf8'),
key: fs.readFileSync(`/etc/letsencrypt/live/example.com/privkey.pem`, 'utf8'),
ca: fs.readFileSync(`/etc/letsencrypt/live/example.com/chain.pem`, 'utf8'),
})
httpsServer.listen([port])
const wss = new WebSocket.Server({
perMessageDeflate: false,
server: httpsServer,
})

最新更新