0

Ich versuche, meine eigene Art der Verwendung von WebSockets in angular2 zu implementieren, und ich stehe vor einem wirklich albernen Problem.WebSocket-Dienst in Angular2, Zugriff auf die übergeordnete Komponente

Ich habe einen Dienst definiert, der eine Methode hatte, die Ihnen ein WebSocket-Objekt zurückgeben würde, indem Sie eine URL und zwei Funktionen erhielten, eine als "onmessage" und eine als "onerror" (ich habe hart codiert) die "OnOpen" und "OnClose", da sie nicht von einer Komponente zu einer Variation):

@Injectable() 
export class WsService { 

    createWebSocket(url: string, onMessage: (e: Event) => any, onError: (e: Event) => any): WebSocket { 
     let ws = new WebSocket(url); 
     ws.onopen = function(evt: Event) { 
      console.log("Connected!"); 
     } 
     ws.onclose = function(evt: Event) { 
      console.log("Disconnected!"); 
     } 
     ws.onmessage = onMessage; 
     ws.onerror = onError; 
     return ws; 
    } 
} 

da ist in meinem appComponent instanziiert ich eine WebSocket-Objekt, wie folgt aus:

ngOnInit(){ 
this.ws = this._ws.createWebSocket("ws://localhost:63562", this.on_msg, this.on_err); 
} 

on_msg(e: Event) { 
     this.blah = e["data"]; 
    } 

    on_err(e: Event) { 
     console.log(e); 
    } 

das Problem ist jetzt Obwohl die Funktion "on_msg" in der AppComponent definiert ist, sieht sie sich selbst als Teil des WebSocket-Objekts, sodass auf Variablen, die in der AppComponent definiert sind, nicht zugegriffen werden kann.

Was soll ich tun?

Antwort

Verwandte Themen