2017-05-31 85 views
1

如何代理一个WebSocket请求?Angular CLI代理服务器wss

我尝试这样做:

new WebSocket('/wss/api/v3/users/websocket')

代理:

"/wss/*" : { 
    "target" : "wss://someurl.com:443/", 
    "secure" : false, 
    "ws" : true, 
    "wss": true 
} 

但是,这给了我: Failed to construct 'WebSocket': The URL '/wss/api/v3/users/websocket' is invalid.

接下来我想:

new WebSocket('wss://wss/api/v3/users/websocket')

代理:

"*wss/*" : { 
    "target" : "someurl.com:443/", 
    "secure" : false, 
    "ws" : true, 
    "wss": true 
} 

但是,这给了我:websocket.provider.ts:20 WebSocket connection to 'wss://wss/api/v3/users/websocket' failed: Error in connection establishment: net::ERR_NAME_NOT_RESOLVED

我怎么代理一个WebSocket的?

+0

我有同样的问题,不想用环境文件解决方案。你有能力使它工作吗?如果是这样,你可以发布你的最终解决方案吗? thx – j3ff

+0

对不起,不记得 –

+0

好吧,无论如何,我必须抓住机会......调试这是如此令人沮丧:P – j3ff

回答

1

由于new WebSocker(url)需要完整的网址才能使用,因此无法使用。

new WebSocket('wss://localhost:3000/wss/api/v3/users/websocket'); 

我将angular-clis environment.ts文件中的设置与应用程序的基本url一起使用,然后使用它对字符串进行连接。

+0

我想使用代理,因为没有它,我会得到一个“否”Access-Control- Allow-Origin'标题出现在请求的资源上.'错误 –

+0

您仍然可以使用代理,但websocket的构造函数需要绝对URL。 –

+0

这就是我在第二个例子中做的对吗? –