【发布时间】: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