2015-04-23 120 views
1

我有一個節點應用程序(angular-fullstack),我從http移動到https。一切正常,但套接字連接不是。我錯過了什麼?爲什麼angular-socket-io會在'WebSocket握手期間發生錯誤:意外的響應代碼:400?'

在的SocketFactory我:

var ioSocket = io('https://localhost', { 
    path: '/socket.io-client' 
}); 

,我相信已經促使傳輸使用 'WSS://'。 https連接都很好。有一段時間,我相信nginx並沒有正確處理代理。但是這是不正確的。

接下來,我將表格'https://locahost'更改爲'https://xxx_actual_server_url_xxxx',現在在初始頁面重新加載後,所有內容都能正常工作。但是我確實看到一個:

WebSocket connection to 'wss://xxx_actual_server_url_xxxx/ 
socket.io-client/?EIO=3&transport=websocket&sid=Y4_cKvyTERz_F1ZCAAAK' 
failed: Error during WebSocket handshake: Unexpected response code: 400 

什麼可能導致這種情況?和如何解決它?我沒有做任何負載平衡或任何事情,只是用'咕嚕咕嚕'運行開發服務器。有什麼想法嗎?

謝謝!

回答

1

一番搜索和狩獵後,我發現,使用nginx的插座,當我需要添加以下到我的代理東西:

proxy_set_header Upgrade $http_upgrade; 
proxy_set_header Connection "upgrade"; 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

已經這樣做了,都是現在好了。希望這會幫助別人。 完整的一套nginx的轉發代理的參數是:

location/{ 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header Host  $host; 
    proxy_pass https://127.0.0.1:9000; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 

感謝那些看着這個!

相關問題