在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
最近与Chrome的合作表明,如果一个页面在Chrome上使用https, websockets必须使用wss。如果必须使用wss,则必须使用端口443(并且不能启动任何其他安全端口,到目前为止我还没有看到任何改变端口的方法),这可能是您的问题,因为您的端口看起来像上面的3003。
现在我正试图让我的IT组补丁/升级Apache在服务器上,所以mod_proxy_wstunnel可以用来使Apache监听443一个反向代理,并通过所有的wss流量通过我的websocket服务器。
我遇到了类似的问题,但我使用的是自签名证书。你提到你买了一个证书。我想它是由证书颁发机构签署的。
否则,就像我的情况一样,未经验证的证书会导致"打开握手被取消"错误。经过验证的证书要么由第三方(证书颁发机构,即VeriSign)验证,要么由客户端明确授权。
在我的例子中,VeriSign没有签署我的证书(自签名),所以我必须明确地授权它。为此,我只需要使用浏览器访问https URL(在您的示例中是"https://securedsitedotcom:3003/call")。然后出现"警告未授权主机"。您需要授权异常,然后才能建立WSS连接。
您的服务器可以使用任何端口,它没有绑定到443。443是HTTPS的默认端口,但任何端口都可以像你所做的那样显式指定。
希望对大家有所帮助。
- 将 JavaScript 文件与 Prepros 连接失败
- js 中的 HTML 连接失败
- SignalR 客户端不知道连接失败
- 猫鼬模型单元测试 - 如果任何测试用例失败,连接将不会关闭
- 警告:失败的 propType:在“维度选取器”中未指定所需的属性“维度名称”.检查“连接(维度选择器)”的渲染方法
- 浏览器在请求失败时自行发出请求,当互联网重新连接时
- 从客户端到socket.io中的服务器的连接失败
- 在wss上的WebSocket连接失败
- Node js服务器safari客户端连接失败
- 如何在Socket.IO中模拟连接失败
- JavaScript文件连接失败
- Img SRC连接失败
- OAuth.io连接失败
- 当使用 SSL 连接失败时,是否有任何浏览器在没有 SSL 的情况下连接
- 与
的 WebSocket 连接失败:WebSocket 握手期间出错:意外响应代码:404 - MongoHQ 节点.js连接 URL 连接失败
- 网络套接字连接失败
- WebSocket连接失败:WebSocket打开握手被取消
- php中函数的Ajax连接失败
- Redis连接失败