WebSocketSubject - 优势?
Posted
技术标签:
【中文标题】WebSocketSubject - 优势?【英文标题】:WebSocketSubject - Advantage? 【发布时间】:2017-09-08 14:26:08 【问题描述】:免责声明:我是网络开发新手,所以请耐心等待......
堆栈:Angular 前端,后端的 Tornado(基于 python)Web 服务器
我已经成功使用 RxJs 和 WebSocket 与后端通信,基于这个非常流行的教程:https://medium.com/@lwojciechowski/websockets-with-angular2-and-rxjs-8b6c5be02fac
我刚刚偶然发现了 RxJs 5 中的 WebSocketSubject,我想知道有什么优势?
到目前为止,我已经能够使用它来连接、发送和接收,但我无法弄清楚如何使用我在 Subject 中获得的典型 RxJs 运算符......所以在某种程度上它只是似乎更难使用。
我错过了什么?
这是我正在使用的代码:
//create the socket
this.pubsubSubject = WebSocketSubject.create("ws://" + this.hostName + ":" + connection_info.port + "/" + connection_info.ps);
//output a message when it's open
this.pubsubSubject.openObserver =
next: value =>
console.log("ps socket is " + (this.pubsubSubject.socket.readyState == WebSocket.OPEN ? "OPEN" : "NOT OPEN"));
//send the authentication token through the socket
this.pubsubSubject.next(JSON.stringify(authenticate_request));
//subscribe to specific events from server
var subscription =
"subscribe": events
this.pubsubSubject.next(JSON.stringify(subscription));
//start getting messages
this.pubsubSubject.subscribe(
(msg: any) =>
console.log("msg: " + msg);
)
【问题讨论】:
【参考方案1】:我认为我的困惑来自对 RxJs 基础知识缺乏了解。但是,我确实弄清楚了在这种情况下如何映射,如下所示:
this.pubsubSubject
.map((resp: IPubSubMessage): any =>
console.log(resp.payload);
).subscribe();
对于那些特别需要有关 WebSocketSubject 的更多信息的人,您可以在此处查看代码中的 cmets:
https://github.com/mpodlasin/rxjs/blob/47ae8573256609492e16a957348883f0c8039c2e/src/observable/dom/WebSocketSubject.ts
我在其他任何地方都找不到这个细节,所以这可能是现在寻找的最佳地点。
很高兴有其他人提供更多信息。
【讨论】:
以上是关于WebSocketSubject - 优势?的主要内容,如果未能解决你的问题,请参考以下文章
从 WebSocketSubject 反序列化 Blob 对象
Angular2 - 如何关闭 WebSocketSubject 底层套接字
Angular Websocket RxJS / WebSocketSubject
使用 RxJs WebSocketSubject 和 Angular Universal 时出现“ReferenceError: WebSocket is not defined”