我目前在安全域(使用ssl)上运行websocket服务器,但由于某些原因,我无法让服务器真正使用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]上。如果有人知道我做错了什么,请让我知道。
发布于 2021-07-02 20:05:51
我找到了答案。问题是我是在套接字服务器中指定端口,而不是在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,
})https://stackoverflow.com/questions/68224554
复制相似问题