使用Angular 6。
我正在遵循here准则,该准则与创建多路WebSocketSubject有关。
我的服务:
public getStuff(topic: string): Observable<any> {
return this.subject.multiplex(
() => JSON.stringify({ subscribe: topic }),
() => JSON.stringify({ unsubscribe: topic }),
message => message.type === topic
);
}
我要在两个不同的地方订阅:
this.myService.getStuff('foo').subscribe(x => console.log('1st sub returns ', x));
this.myService.getStuff('foo').subscribe(x => console.log('2nd sub returns ', x));
这可以确保仅将“ foo”消息返回给每个使用者。
现在,我想确保只有两个使用者都被取消订阅时,取消订阅请求才发送到服务器。该准则建议使用发布:
这具有潜在的危险,因为Observable的一个使用者可能会取消订阅,并且服务器可能会由于收到取消订阅消息而停止发送消息。这需要在服务器上进行处理,或在从“多路复用”返回的Observable上使用发布。
这不是在服务器上处理此问题的选项(至少目前是这样),而且我不确定如何在此处使用publish或其背后的原因。