2015-04-23 98 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; 
    } 

感谢那些看着这个!

相关问题