Angular 7 Websocket handle Subject<MessageEvent>

问题描述 投票:0回答:1

我试图实现一个非常简单的基于WebSockets的Angular应用程序,我从一个例子中得到的,连接是这样建立的。

public connect(url): Subject<MessageEvent> {
if (!this.subject) {
  this.subject = this.create(url);
  console.log('Successfully connected: ' + url);
}
return this.subject;

}

这就是我如何试图适应我们的websocket的输出--但.map不存在,我一直在寻找如何处理Subject,但我就是无法处理它。

public messages: Observable<Message>;

constructor(private wsService: WebsocketService) {
        this.messages = wsService.connect(CHAT_URL).map(
          (response: MessageEvent): Message => {
            const data = JSON.parse(response.data);
            return {
              author: data.author,
              message: data.message
            };
          }
        );
    }

编辑我得到以下错误信息。

error TS2339: Property 'map' does not exist on type 'Subject<MessageEvent>'.
angular websocket message
1个回答
3
投票

我希望你的方法是在ngOnit或构造函数中监听。试试这个。

import { map } from 'rxjs/operators';

ngOnit() {
this.messages = this.wsService.connect(CHAT_URL).pipe(map(
  (response: MessageEvent): Message => {
    const data = JSON.parse(response.data);
    return {
      author: data.author,
      message: data.message
    };
  }));
}

请注意,如果你的方法是在ngOnit或构造函数里面监听的,你可以试试这个。 试试 rxjs/webSocket

© www.soinside.com 2019 - 2024. All rights reserved.