Я пытаюсь отправить некоторые данные из моего go_backend на мой угловой интерфейс.Проблема, с которой я сталкиваюсь, заключается в следующем:
Соединение с веб-сокетом установлено, и я получаю данные в моем Сервисе, но как только я пытаюсь подписаться на мою услугу, никакие данные не доступны!
Я знаю, что у меня есть данные в моем сервисе, так как я могу регистрировать их там.
Код моего сервиса выглядит так:
import { Injectable, EventEmitter } from '@angular/core';
import {environment} from '../../environments/environment';
@Injectable({
providedIn: 'root'
})
export class WebsocketService {
private socket: WebSocket;
private listener: EventEmitter<any> = new EventEmitter();
constructor() {
this.socket = new WebSocket(`${environment.wsUrl}/canLoop`);
this.socket.onopen = (event) => {
console.log('socket.info: ', this.socket.OPEN);
this.listener.emit({'type': 'open', 'data': event});
};
this.socket.onclose = (event) => {
console.log(event);
this.listener.emit({'type': 'close', 'data': event});
};
this.socket.onmessage = (event) => {
console.log(event);
this.listener.emit({'type': ' message', 'data': event});
};
}
public close() {
this.socket.close();
}
public getEventListener() {
return this.listener;
}
}
И подписан в моем Компоненте так:
import { Component, OnInit, OnDestroy } from '@angular/core';
import { CanRawService } from 'src/app/services/can-raw.service';
import { WebsocketService } from 'src/app/services/websocket.service';
@Component({
selector: 'app-message-loop',
templateUrl: './message-loop.component.html',
styleUrls: ['./message-loop.component.scss']
})
export class MessageLoopComponent implements OnInit {
public canMsgs: Array<any>;
constructor(private rawSrv: CanRawService, private sockSrv: WebsocketService) {
this.canMsgs = [];
}
ngOnInit() {
this.sockSrv.getEventListener().subscribe(event => {
if (event.type === 'message') {
// tslint:disable-next-line:prefer-const
let data = JSON.parse(event.data);
this.canMsgs.push(data);
console.log('lelele', event.data);
}
if (event.type === 'close') {
console.log('/The socket connection has been closed');
}
if (event.type === 'open') {
console.log('/The socket connection has been established');
}
});
}
// tslint:disable-next-line:use-life-cycle-interface
ngOnDestroy() {
this.sockSrv.close();
}
}
Я могу видеть данные, когда регистрирую их в службе, но не могу получить к ним доступ, когда подписываюсь на них
Любые советы приветствуются!
ура