繁体   English   中英

wss上的WebSocket连接失败

[英]WebSocket connection on wss failed

我已经购买了一个证书并安装在我的node.js网站上。但是浏览器中的https显示为绿色并且正常。现在,我正在尝试使用wss建立套接字连接,但它失败了。 Javascript客户端的错误是这样的。

   WebSocket connection to 'wss://securedsitedotcom:3003/call' failed:        
   WebSocket opening handshake was canceled

请帮忙!

客户端代码(Javascript)

var ws = new WebSocket('wss://securedsitedotcom:3003/call');

服务器端的代码(node.js)

 https = require('https');
 var server = https.createServer({
    key: fs.readFileSync(config.certKeyPath),
    cert: fs.readFileSync(config.certCrt),
    requestCert: true,
    rejectUnauthorized: false
 },app);
 server.listen(port);
 var wss = new ws.Server({
   server: server,
   path: '/call'
 });

浏览器控制台出错:

WebSocket connection to 'wss://securedsitedotcom:3003/call' failed:          

WebSocket opening handshake was canceled

我遇到了类似的问题,但我使用的是自签名证书。 你提到你买了证书。 我是客人,它是由证书颁发机构签署的。

否则,就像在我的情况下,未经验证的证书可能导致“打开握手被取消”错误。 经验证的证书由第三方(证书颁发机构,即VeriSign)验证或由客户明确授权。

在我的情况下,VeriSign没有签署我的证书(自签名),因此我必须明确授权。 为此,我只需要使用浏览器访问https URL(在您的情况下为“ https:// securedsitedotcom:3003 / call ”)。 然后出现“警告未经授权的主机”。 您需要授权异常,而不是您可以进行WSS连接。

您的服务器可以使用任何端口,它不绑定到443. 443是https的默认端口,但可以像您一样明确指定任何端口。

我希望它对某人有帮助。

最近使用Chrome的工作表明,如果某个网页在Chrome上作为https提供,则网页框必须使用wss。 如果必须使用wss,必须使用端口443(并且不启动任何其他安全端口,到目前为止我还没有看到任何更改端口的方法),这可能是您的问题,因为您的端口看起来像3003以上。

现在我正试图让我的IT小组在该服务器上修补/升级Apache,因此可以使用mod_proxy_wstunnel使Apache在443上侦听反向代理并将所有wss流量传递到我的websocket服务器。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM