Ich habe einen APIService, der eine Verbindung zu einem Websocket mit einem anderen Dienst herstellt. Der Websocket-Dienst gibt einen Socket vom Typzurück. Dann möchte ich in meinem APIService dieses Thema abhängig von der Nutzlast in verschiedene Themen spucken. Mein APIService sieht wie folgt aus:Teilen Sie einen Betreff in verschiedene Themen in Abhängigkeit von den Daten
export class APIService {
public sonos: Subject<sonosData>;
public commits: Subject<commitData>;
constructor(wsService: WebsocketService) {
this.sonos = <Subject<sonosData>>wsService
.connect(WEBSOCKET_URL)
.map((response: MessageEvent) => {
let data = JSON.parse(response.data);
if(data.sonos) {
return data.sonos;
}
});
}
}
Gibt es einen anderen Betreiber statt map
, die ich verwenden kann? Wenn ich etwas sudo-Code für diese schreiben würde es so aussehen:
export class APIService {
public sonos: Subject<sonosData>;
public commits: Subject<commitData>;
constructor(wsService: WebsocketService) {
wsService
.connect(WEBSOCKET_URL)
.forEach((response: MessageEvent) => {
let data = JSON.parse(response.data);
if(data.sonos) {
this.sonos = data.sonos;
}
if(data.commits) {
this.commits = data.commits;
}
});
}
}
Aber dann wird nicht die öffentlichen Variablen definiert werden und einen Fehler, da meine Komponenten mit ihnen verursachen können sie nicht abonnieren.
Vielen Dank! Es hat funktioniert, die onNext-Methode hat bei mir nicht funktioniert. Aber die Methode funktioniert, funktioniert wahrscheinlich genauso? – trevligheten
Ja. Ich habe das Code-Snippet mit Javascript-Implementierung geschrieben, wahrscheinlich ist Typescript ein bisschen anders. Der Hauptpunkt, für den es für dich gearbeitet hat. –