Ich werde Angular2 verwenden, um eingehende Web-Socket-Nachrichten zu empfangen und eine Webseite basierend auf diesen empfangenen Nachrichten zu aktualisieren. Im Moment benutze ich einen Dummy-Echo-Websocket-Dienst und werde ihn ersetzen.Angular2/Websocket: Wie gebe ich eine Observable für eingehende Websocket-Nachrichten zurück?
Aus meiner Sicht muss die Funktion, die Websocket-Nachrichten empfangen, eine Observable zurückgeben, die von einem Handler abonniert wurde, der die Webseite aktualisieren wird. Aber ich kann nicht herausfinden, wie man ein Observable zurückgibt.
Code-Snippet ist unten beigefügt. Die MonitorService
erstellt eine Websocket-Verbindung und gibt eine Observable zurück, die die empfangenen Nachrichten enthält.
Unten ist eine weitere Komponente, die die observable von oben zurückgegeben abonniert und aktualisiert Webseiten entsprechend.
export class InstanceListComponent {
private instanceStatus: boolean
private instanceName: string
private instanceIcon: string
constructor(private monitor: MonitorService) {
this.monitor.GetInstanceStatus().subscribe((result) => {
this.setInstanceProperties(result);
});
}
setInstanceProperties(res:any) {
this.instanceName = res.Instance.toUpperCase();
this.instanceStatus = res.Status;
if (res.Status == true)
{
this.instanceIcon = "images/icon/healthy.svg#Layer_1";
} else {
this.instanceIcon = "images/icon/cancel.svg#cancel";
}
}
}
Jetzt bin ich in der Browser-Konsole TypeError: this._subscribe is not a function
Danke! Und es stellt sich heraus, dass wiederkehrende Observable wie folgt auch funktioniert: return Observable.fromEvent (websocket, 'message'); 'Haben Sie irgendwelche Ideen über ihre Unterschiede? –
@BingLu Sie sind fast gleich. Der 'fromEvent'-Weg ist nur ein Wrapper für das Event, was ich in meiner Antwort getan habe. Ich bezweifle, dass es einen Unterschied gibt. Aber es ist ein besserer Weg als meine Antwort trotzdem: D. Ich werde es meine Antwort aktualisieren, um es aufzunehmen. Danke – Abdulrahman
@Abdulrahman Ich weiß, dass es vor langer Zeit war, aber ich frage mich, ob du den Plunker aktualisieren könntest, um 'fromEvent' zu verwenden. Übrigens, sollte 'WebSocketSubject' nicht für das Streaming von Daten verwendet werden? (Ich frage mich nur, ich bin neu bei Websockets). – brians69