【发布时间】:2021-04-07 18:22:24
【问题描述】:
我有一个用 node.js 编写的应用程序,它可以通过正常的 ws 运行。我试图让它与 wss 一起工作,但它只是没有发生。我需要 wss,因为 chrome 不允许我在不安全的连接上使用相机/麦克风。
我获得了证书,HTTPS 正在运行。
我还将它包含在我的 node.js 服务器应用程序中:
// Minimal amount of secure websocket server
var fs = require('fs');
// read ssl certificate
var privateKey = fs.readFileSync('ssl-cert/privkey.pem', 'utf8');
var certificate = fs.readFileSync('ssl-cert/fullchain.pem', 'utf8');
var credentials = { key: privateKey, cert: certificate };
var https = require('https');
//pass in your credentials to create an https server
var httpsServer = https.createServer(credentials);
httpsServer.listen(9090);
var WebSocketServer = require('ws').Server;
我还编辑了 nginx.conf:
tcp {
upstream websockets {
## webbit websocket server in background
server 89.221.222.68:9090;
check interval=3000 rise=2 fall=5 timeout=1000;
}
server {
server_name _;
listen 9090;
ssl on;
proxy_ssl_certificate /ssl-cert/fullchain.pem;
proxy_ssl_certificate_key /ssl-cert/privkey.pem;
timeout 43200000;
websocket_connect_timeout 43200000;
proxy_connect_timeout 43200000;
so_keepalive on;
tcp_nodelay on;
websocket_pass websockets;
websocket_buffer 1k;
}
}
我也尝试在 apache2 配置中设置 ProxyPass,但似乎没有任何效果。
我不知道问题出在哪里,我有限的 linux 经验对我没有帮助。
所以我的问题: 如何从头开始设置 wss?我在 server.com/9090 上运行 node.js 应用程序,我需要从客户端与之通信。
【问题讨论】: