【问题标题】:WebSocket connection on wss failedwss 上的 WebSocket 连接失败
【发布时间】:2015-12-18 01:03:45
【问题描述】:

我已经购买了证书并安装在我的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

【问题讨论】:

  • 服务器是否在3003端口实现wss?
  • 听起来服务器没有处理连接升级:您能提供更多信息吗?
  • 是的,服务器在端口 3003 @DavidSchwartz
  • 显示一些代码,显示一些日志...做一些故障排除。
  • 更新..添加更多细节

标签: javascript node.js websocket


【解决方案1】:

最近与 Chrome 的合作表明,如果在 Chrome 上将页面作为 https 服务,则 websockets 必须使用 wss。如果必须使用 wss,则必须使用端口 443(并且不引导任何其他安全端口,到目前为止我还没有看到任何更改端口的方法),这可能是您的问题,因为您的端口看起来像上面的 3003。

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

希望这会有所帮助。

【讨论】:

  • 你知道在 Edge、Firefox 和 Safari 上是否也是这种情况?
【解决方案2】:

我遇到了类似的问题,但我使用的是自签名证书。您提到您购买了证书。我来宾它由证书颁发机构签名。

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

在我的例子中,威瑞信没有签署我的证书(自签名),所以我必须明确授权它。为此,我只需要使用浏览器访问 https URL(在您的情况下为“https://securedsitedotcom:3003/call”)。然后出现“警告未经授权的主机”。您需要授权例外,然后才能建立 WSS 连接。

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

我希望它对某人有所帮助。

【讨论】:

  • 您的服务器可以使用任何端口,这是真的,但我仍然可以访问。 WebSocket 连接到“ws://maximumroulette.com:10066/”失败:连接在收到握手响应之前关闭 WebSocket 连接到“wss://maximumroulette.com:10066/”失败:WebSocket 打开握手被取消杀了我.. ..
  • 已经有一段时间了,我希望你修复它。否则,我在回复中是否说过,“打开握手被取消”错误可能是由于您的浏览器保护您免受未经验证的来源的影响。 (也就是说,您的证书要么未由 CA(即 verisign)签名,要么未明确授权)。要使用 chrome 进行授权,请访问 https 服务器并传递警告,或者在设置中=> https/ssl => 管理证书 => 从那里进行自动化
猜你喜欢
  • 1970-01-01
  • 2021-09-28
  • 1970-01-01
  • 2021-06-19
  • 1970-01-01
  • 2016-03-11
  • 2019-06-11
  • 2022-01-19
  • 1970-01-01
相关资源
最近更新 更多