Angular2中的WebSocket服务,访问父组件



我正在尝试在Angular2中实现自己的使用Websocket的方式,而我面临着一个非常愚蠢的问题。

我有一个服务定义的服务,它具有一种方法,可以通过获取URL和两个功能来使您回到Websocket对象,一个用作" OnMessage",一种用于" OnError"(我已经硬编码了" onopen"one_answers" onclose",因为它们因组件而异(:

    @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;
    }
}

然后在我的appComponent中,我实例化了一个WebSocket对象,例如:

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);
  }

现在问题是,即使在AppComponent中定义了" on_msg"函数,它也将其视为WebSocket对象的一部分,因此它无法访问和操纵AppComponent中定义的变量。

我该怎么办?

使用像这样的已经制作的库:https://www.npmjs.com/package/angular2-websocket-service

它将利用您可以找到的错误,并且通常是基于最佳实践...

[编辑]rxjs也有等效的东西:

https://github.com/reactivex/rxjs/blob/master/src/src/observable/dom/websocketsubject.ts

最新更新