参考:
1、首先下载 mkcert ,然后生成根证书
mkcert -install
2、生成服务需要的SSL证书
mkcert example.com "*.example.com" example.test localhost 127.0.0.1 ::1
3、node 代码测试
VSCode编辑代码,安装 ws 模块,把上一步生成的SSL证书放过来
const https = require('https');
const http = require('http');
const fs = require('fs');
const WebSocket = require('ws');
// 根据项目的路径导入生成的证书文件
const privateKey = fs.readFileSync('example.com+5-key.pem');
const certificate = fs.readFileSync('example.com+5.pem');
const credentials = {
key: privateKey,
cert: certificate
};
// 创建 HTTP 与 HTTPS 服务器
const httpServer = http.createServer((req, res) => {
res.writeHead(200);
res.end("This is a http server!\n");
});
const httpsServer = https.createServer(credentials, (req, res) => {
res.writeHead(200);
res.end("This is a https server!\n");
});
// 分别设置 HTTP HTTPS 的访问端口号
const PORT = 3030;
const SSLPORT = 3031;
// 创建 HTTP 服务器
httpServer.listen(PORT, function () {
console.log('HTTP Server is running on: http://localhost:%s', PORT);
});
// 创建 HTTPS 服务器
httpsServer.listen(SSLPORT, function () {
console.log('HTTPS Server is running on: https://localhost:%s', SSLPORT);
});
const wss = new WebSocket.Server(
{
server: httpsServer
},
() => {
console.log('socket start');
}
);
// 建立连接
wss.on('connection', ws => {
// 接收数据
ws.on('message', msg => {
// 广播
wss.clients.forEach(function each(client) {
if (client.readyState === WebSocket.OPEN) {
client.send(msg);
}
});
});
});
4、浏览器测试
服务启动后控制台输出:
HTTP Server is running on: http://localhost:3030
HTTPS Server is running on: https://localhost:3031
直接点击上面 https 链接:
可以看到连接安全,证书有效。
测试wss,可以在这个网站上:websocket在线测试工具
可以看到wss连接成功。