使用rxjs创建一个可观察的对象,该对象稍后将连接到web套接字
use rxjs to create an observable that will be connected to a web socket later
我正在做一个web项目。当用户通过身份验证时,会创建一个web套接字(服务器只接受经过身份验证的用户)。
我希望我的模块(观察者)能够从"服务器消息传递"模块(服务,..)中获得可观察的信息,甚至在用户通过身份验证之前。基本上,还没有任何东西在可观察的背后。
这个"服务器消息传递"服务抽象出web套接字创建的细节,并返回基于套接字的可观察结果。
问题是,我如何创建一个基于套接字的可观察对象(稍后创建/懒惰)。
当套接字出现时,请在Next上。。在那之前,将不召集任何观察员。
在伪代码和仅概念代码中:
//interested observer.js
messagingService.observable.subscribe(observer);
...
// user is authneticated, messagingservice.js
this.observervable.onmessage = socket.onmessage;
您可以使用AsyncSubject和mergeAll的组合,在建立套接字连接之前,从消息服务中"发布"可观察到的内容。类似这样的东西:
// messagingService.js
// will be given the observable from the socket when
// it is ready
var socketSubject = new Rx.AsyncSubject();
// call flatMap to flatten the observable of observable into
// just an observable of messages
messagingService.observable = socketSubject.mergeAll();
// make the connection
messagingService.makeConnection = function(args) {
var messageObservable = // ...
// give the messageObservable to the socketSubject
socketSubject.onNext(messageObservable);
socketSubject.onComplete();
}
使用此技术,客户端代码可以在建立连接之前订阅可观察的。
相关文章:
- 如何在Javascript中连接两个结构不同的对象
- Will my'新对象'在套接字断开连接时被垃圾收集
- Javascript.连接两组对象的最佳方式,如SQL
- '对象不是函数'当使用angular连接两个json数组时
- 通过Ajax调用PHP文件中的MySQL连接singleton对象
- 连接与数组对象相关的文本:方式和位置
- 如何通过连接多个异步javascript调用,从对象数组中排序并获取第一个obejct
- 在 Javascript 中将对象连接为空格分隔字符串的最简单方法是什么?
- Facebook已连接但我的用户是一个空对象
- Jquery新元素在连接时导致[对象对象]
- 连接对象值
- javascript对象,连接重复的键,同时保留多个值
- 是将连接对象传递给模块更好,还是在模块本身内连接更好
- 在不使用jQuery的情况下连接两个JSON对象
- 如何在 redis 中将 JS 对象传递给它自己的事件参数 - 连接事件上的哨兵
- 当连接在一起时,如何使用两个部分构建 JSON 对象,生成正确的 JSON 数据路径
- 在 JavaScript 不工作对象中连接两个变量
- 将两个 JSON 对象与数组对象连接起来
- 如何将javascript对象连接到函数内动态创建的html元素
- Three.js将两个对象连接为一个对象