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”

在 ASP.NET 中使用 Web API 优于 Web 方法的优势是啥

IBM Worklight - 开发移动 Web 应用程序有啥优势?