Angular2的HTTP请求和Websocket

3

大家好,我有一个应用程序,目前只能通过http请求来检索数据...现在问题是我们也有一个websocket,但是我不知道如何将它们结合起来使用:

这是我的http请求:

 public stock(): Observable<any> {
    if (!this._stock) {
        // rest api
        this._stock = this.http.get(url)
            .map((stock: Response) => {
                // cache the value
                stock.json().items.forEach((item) => {
                    this._stock[item.productKey] = item;
                });
                return this._stock;
            })
            .publishReplay(1)
            .refCount();
    }
    return this._stock;
}

这是WebSocket:
public getStockMessages(): Observable<any> {
    return new Observable(obs => this.inventoryChannel.on(`STOCK`, (data) => {
        return obs.next(data);
    }));
}

看起来 AJAX 请求被过滤到了特定的股票,而 WebSocket 没有。并不清楚你想要将这两个流组合的结果是什么,或者你所说的“组合”是什么意思。我很想帮忙,但是根据你提出的问题,我无法给出答案。 - Ben Lesh
问题在于,在 Angular 组件中,您订阅了某个东西:this.service.getStock((res)=> {...}),但是如果 WebSocket 接收到新信息(getStockMessages),因为股票已更改,我需要将此信息放入服务 getStock 中,否则每个组件都需要订阅 2 个不同的服务,以第一次接收值和其他时间更新。 - d.zurico
所以有一个ajax请求获取一个值,但之后你从web socket获取了额外的值? - Ben Lesh
1个回答

2

根据您上面的说法,似乎您正在寻求:

  1. 从服务器请求单个值。
  2. 从Web套接字获取其他值。
stock().concat(getStockMessages())

...可能是你想要的。

但说实话,我仍然很难确切地理解你想做什么...但我认为这将解决你的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接