You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ws npm库创建WSS WebSocket服务报错:socket hang up

如何用ws库创建支持WSS的WebSocket服务

当然可以创建支持WSS(WebSocket Secure)的服务啦!你现在遇到的socket hang up错误,是因为你的代码只启动了普通的WS服务,没有配置SSL证书——WSS本质上是WS加TLS加密,必须要有证书才能正常工作。下面一步步教你解决:

1. 生成本地测试用的自签名SSL证书

因为是本地开发测试,我们可以用openssl生成自签名证书(生产环境一定要用正规CA颁发的证书,比如Let's Encrypt的免费证书)。打开终端执行以下命令:

openssl req -x509 -newkey rsa:2048 -nodes -sha256 -subj '/CN=localhost' -keyout localhost.key -out localhost.crt

这条命令会在当前目录生成两个文件:localhost.key(私钥)和localhost.crt(证书),参数简单解释下:

  • -x509:生成符合X.509标准的证书
  • -newkey rsa:2048:同时生成2048位的RSA私钥
  • -nodes:私钥不设置密码,方便本地使用
  • -subj '/CN=localhost':指定证书的通用名称为localhost,匹配我们的本地测试域名

2. 修改代码,配置WSS服务

有两种方式可以配置,选一种你觉得顺手的就行:

方式一:直接在WebSocket.Server里配置证书

const fs = require('fs');
const WebSocket = require('ws');

// 读取刚才生成的证书和私钥
const sslOptions = {
  cert: fs.readFileSync('./localhost.crt'),
  key: fs.readFileSync('./localhost.key')
};

// 创建WSS服务器,传入sslOptions
const wss = new WebSocket.Server({ ...sslOptions, port: 8080 });

wss.on('connection', (ws) => {
  console.log('WSS连接成功!');
  // 可以给客户端发个欢迎消息测试
  ws.send('Hello from WSS server!');
});

方式二:先创建HTTPS服务器,再挂载WSS

这种方式适合需要同时运行HTTPS服务和WSS服务的场景,两者可以共用同一个端口:

const https = require('https');
const fs = require('fs');
const WebSocket = require('ws');

// 创建HTTPS服务器
const httpsServer = https.createServer({
  cert: fs.readFileSync('./localhost.crt'),
  key: fs.readFileSync('./localhost.key')
});

// 把WSS挂载到HTTPS服务器上
const wss = new WebSocket.Server({ server: httpsServer });

wss.on('connection', (ws) => {
  console.log('WSS连接成功!');
});

// 启动服务器监听8080端口
httpsServer.listen(8080, () => {
  console.log('WSS服务器运行在wss://localhost:8080');
});

3. 测试WSS连接

因为我们用的是自签名证书,wscat默认会验证证书合法性,所以需要加--no-check参数跳过验证,终端执行:

wscat -c wss://localhost:8080 --no-check

现在就能成功连接,看到服务器的日志和欢迎消息啦!

生产环境注意事项

  • 不要用自签名证书,去正规CA申请信任的证书(比如Let's Encrypt是免费的)
  • 确保证书和私钥的文件路径正确,并且服务器有读取权限
  • 如果用云服务,可能需要在控制台配置SSL证书,不需要自己在代码里处理

内容的提问来源于stack exchange,提问作者physicsboy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:32:22