簡體   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