如何通过nextjs将ssl集成到websocket中?
Posted
技术标签:
【中文标题】如何通过nextjs将ssl集成到websocket中?【英文标题】:how to integrate ssl in websocket through nextjs? 【发布时间】:2020-08-19 23:14:18 【问题描述】:我了解到,如果我想使用wss
,我需要有证书和密钥,所以我生成了两个
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 100 -nodes
我有一个代码可以在 Express 中使用,但如下所示:
const server = https.createServer(
cert: fs.readFileSync('/www/wwwroot/mydomain/cert/cert.pem'),
key: fs.readFileSync('/www/wwwroot/mydomain/cert/key.pem')
);
console.log(server)
const wss = new Websocket.Server( server )
server.listen(8082)
如何在 nextjs 中运行wss
?
【问题讨论】:
【参考方案1】:似乎您可能会在两部分答案之后:
如何在 NextJS 中设置 socket api 如何使用 pem 文件验证该 api如何在 NextJS 中设置 socket api
像往常一样,我会引导您查看项目中的示例。他们真的很好,过去解决了我的很多问题。
在这种情况下,我没有找到任何 web-sockets 的示例,但经过一番挖掘后,我找到了这个示例。
https://github.com/vercel/next.js/tree/442fbfaa4d4e8205cf10c7e5d27b8f51b7a4bdc6/examples/with-socket.io
如何使用 pem 文件验证该 api
使用上面的示例和您的身份验证逻辑,您应该能够在告诉 NextJs 做什么之前围绕 WSS 服务器执行所有操作。
您的 wssServer 逻辑将定义什么是可能的,而您的 NextJsServer 就像一个中间人,定义哪些查询去哪里。
https://github.com/vercel/next.js/blob/442fbfaa4d4e8205cf10c7e5d27b8f51b7a4bdc6/examples/with-socket.io/server.js
// server.js
const app = require('express')()
const server = require('http').Server(app)
const io = require('socket.io')(server)
const next = require('next')
const port = parseInt(process.env.PORT, 10) || 3000
const dev = process.env.NODE_ENV !== 'production'
const nextApp = next( dev )
const nextHandler = nextApp.getRequestHandler()
// fake DB
const messages =
chat1: [],
chat2: [],
// socket.io server
io.on('connection', socket =>
socket.on('message.chat1', data =>
messages['chat1'].push(data)
socket.broadcast.emit('message.chat1', data)
)
socket.on('message.chat2', data =>
messages['chat2'].push(data)
socket.broadcast.emit('message.chat2', data)
)
)
nextApp.prepare().then(() =>
app.get('/messages/:chat', (req, res) =>
res.json(messages[req.params.chat])
)
app.get('*', (req, res) =>
return nextHandler(req, res)
)
server.listen(port, err =>
if (err) throw err
console.log(`> Ready on http://localhost:$port`)
)
)
【讨论】:
以上是关于如何通过nextjs将ssl集成到websocket中?的主要内容,如果未能解决你的问题,请参考以下文章
NextJS:通过上下文将字符串从输入传递到 getStaticProps
如何将道具从组件传递到 NextJS 中的 getServerSideProps()?