WebSocket响应未显示在控制台Angular 8中

问题描述

我已在angular 8中实现了rxjs6 Websockets服务,但在网络调用中得到了响应,但问题是我无法在控制台中显示响应或将响应保存在任何变量中。

Web服务代码如下:

import { Injectable } from '@angular/core';


import { Subject } from 'rxjs/Subject';
import { Observable } from 'rxjs/Observable';
import { AnonymousSubject } from 'rxjs/internal/Subject';
import { Observer } from 'rxjs/Observer';


@Injectable()
export class WebsocketService {

  constructor() { }

  private subject: Subject<MessageEvent>;
  private connected$ = new Subject<any>();

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

  public connected(): Observable<any> {
    return this.connected$.asObservable();
  }

  private create(url): Subject<MessageEvent> {
    let ws = new WebSocket(url);

    let observable = new Observable((obs:  Observer<MessageEvent>) => {
      ws.onmessage = obs.next.bind(obs);
      ws.onerror = obs.error.bind(obs);
      ws.onclose = obs.complete.bind(obs);

      return ws.close.bind(ws);
  });
    let observer = {
      next: (data: Object) => {
        if (ws.readyState === WebSocket.OPEN) {
          ws.send(JSON.stringify(data));

        }
      }
    }
    return Subject.create(observer,observable);


}
}"

在我的app.ts文件中,调用了angular connect函数,它成功连接到了websocket ad,我开始在网络呼叫中接收数据,但控制台上没有显示数据

  async connect() {
      this.messages = <Subject<any>>this._websocket
        .connect(this.address).pipe(
        map((response: MessageEvent): any => {

          console.log("response1",response);


          return response.data;
        })) ;


        console.log("websocket",this._websocket);


      this.messageLog = this.messages.asObservable()
      .pipe(scan((current,change) => {

        return [...current,`RESPONSE: ${change}`]
        },[]));

        console.log(this.messageLog);
      // this.messages.next(`CONNECT: ${this.address}`);
    }

它还表明Subject.create(observer,observable)已被弃用,我还能用什么代替它?以及我该怎么做才能在控制台上显示数据

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)