我有一个Angular2 websocket应用程序,需要在发送任何其他消息之前完成连接握手。
我的小部件"控制器使用"网络" service是websockets的包装器
import { $WebSocket } from 'angular2-websocket/angular2-websocket';
"小部件" ngOnit在握手完成之前发送websocket消息。
如何确保服务将外发消息排队/"等待"在处理之前完成初始化/握手?
我觉得我这样做比应该更难
答案 0 :(得分:2)
您可能希望确实存在需要首先对应用程序的其余部分透明的握手。
您可以将应用程序其余部分发送的邮件存储在replay subject中,以便日后使用。
您希望将缓冲区大小设置为保留所有消息但不会导致内存问题的值。
稍后当握手完成时,您订阅了重播主题,并且您将获得在websocket握手完成后需要发送的所有消息。
对于应用程序的其余部分,此缓冲是透明的:应用程序的其余部分正在调用messageService.send()
,在ReplaySubject
内部缓冲此内容。
消息发送者订阅重播主题并获取要发送的所有消息:它没有指示消息是缓冲还是实时发送,这对于缓冲消息的消费者是透明的。