如何解决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 举报,一经查实,本站将立刻删除。