WebSockets - 服务器不满足 wss 请求的问题。有啥问题?

Posted

技术标签:

【中文标题】WebSockets - 服务器不满足 wss 请求的问题。有啥问题?【英文标题】:WebSockets - Problems with server not fulfilling wss request. What could be wrong?WebSockets - 服务器不满足 wss 请求的问题。有什么问题? 【发布时间】: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 应用程序,我需要从客户端与之通信。

【问题讨论】:

【参考方案1】:

Forever 插件没有工作,服务器没有运行。它现在可以工作了。

【讨论】:

以上是关于WebSockets - 服务器不满足 wss 请求的问题。有啥问题?的主要内容,如果未能解决你的问题,请参考以下文章

engine.io 是不是支持安全的 WebSockets wss?

用于 SSL PHP 站点和 Websockets WSS 的 Nginx 配置?

iis8 上 WSS 上的 Ratchet Websockets

Beyondcode\laravel-websockets 它正在重定向到 wss 而不是 localhost 上的 ws

如何在 Play!Framework WebSockets ("wss://") 中使用 TLS

是否可以使用带有所需端口的 http 方案,比如 6500,而不是 WebSockets 中的 ws 和 wss 方案?