【问题标题】:angular2 http request and websocket [duplicate]angular2 http请求和websocket [重复]
【发布时间】:2023-04-04 08:55:01
【问题描述】:

大家好,我有一个应用程序,到目前为止,它只是通过 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;
}

这是网络套接字:

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

【问题讨论】:

  • 看起来 AJAX 请求被过滤到特定股票,而 Web 套接字不是。您希望组合这两个流的结果是什么,或者您所说的组合是什么意思,这并不是很明显。我想帮忙,但我无法回答您提出的问题。
  • 那么问题是在 Angular 组件中你订阅了一些东西:this.service.getStock((res)=> {...}) 但是如果 websocket 接收到新信息(getStockMessages)因为库存发生了变化,我需要将此信息放在服务 getStock 中,否则每个组件需要订阅 2 个不同的服务才能第一次接收值,其他时间接收更新。
  • 那么有一个 ajax 请求会获取一个值,但之后您会从 Web 套接字获取其他值?

标签: angular websocket observable


【解决方案1】:

鉴于您上面所说的,您似乎希望:

  1. 从服务器请求单个值。
  2. 从网络套接字获取附加值。
stock().concat(getStockMessages())

... 可能是你想要的。

但老实说,我仍然很难弄清楚你到底想要做什么......但我认为这会解决你的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-12
    • 2017-04-24
    • 2016-10-25
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    相关资源
    最近更新 更多