队列websocket请求直到初始化/进程队列

时间:2016-06-16 19:41:17

标签: angular rxjs angular2-services

我有一个Angular2 websocket应用程序,需要在发送任何其他消息之前完成连接握手。

我的小部件"控制器使用"网络" service是websockets的包装器

import { $WebSocket } from 'angular2-websocket/angular2-websocket';

"小部件" ngOnit在握手完成之前发送websocket消息。

如何确保服务将外发消息排队/"等待"在处理之前完成初始化/握手?

  • RxJS(受控观察者,主题)? (我还不能按照文档中的RxJS秘密进行处理)
  • 保证?
  • 已经内置到Angular中的东西(例如在服务初始化之前推迟我的控制器的初始化)?

我觉得我这样做比应该更难

1 个答案:

答案 0 :(得分:2)

您可能希望确实存在需要首先对应用程序的其余部分透明的握手。

您可以将应用程序其余部分发送的邮件存储在replay subject中,以便日后使用。

您希望将缓冲区大小设置为保留所有消息但不会导致内存问题的值。

稍后当握手完成时,您订阅了重播主题,并且您将获得在websocket握手完成后需要发送的所有消息。

对于应用程序的其余部分,此缓冲是透明的:应用程序的其余部分正在调用messageService.send(),在ReplaySubject内部缓冲此内容。

消息发送者订阅重播主题并获取要发送的所有消息:它没有指示消息是缓冲还是实时发送,这对于缓冲消息的消费者是透明的。