如何处置SignalR statechanged回调函数

时间:2018-04-16 20:39:25

标签: angular callback connection signalr dispose

我正在尝试实现锁定未来,以防止在我的Angular 5 Web应用程序中对同一文档进行多次编辑。我在Angular服务中创建了我的集线器和连接,以便在多个组件中重用它。一旦用户登录,我将创建我的代理和连接,这些都是服务中的商店。在OnInit中的每个组件中,我都有一个代码可以运行在" connection.onStatChanged"调用锁定命令到集线器。因为我在服务中存储连接,所以在我离开一个组件后,该组件的事件监听器正在监听" onStateChanged"用于连接。我想清除每个组件的ngOnDestory中的回调函数。如果连接丢失,服务器和用户将页面更改为另一个页面,则事件监听器仍在运行,并且一旦连接再次建立,它就会尝试锁定该文档!

this.dataService.connection.stateChanged((change) => {
    if (change.newState === $.signalR.connectionState.connected) {
      this.registerSignalR();
      this.dataService.authProxy.invoke('lock', this.authNo, this.userService.userName, this.userService.userId);
    }
    this.connectionStateChange.next(change.newState);
  });

1 个答案:

答案 0 :(得分:0)

我已使用以下代码解决了这个问题,但我不确定它是最好的方法吗?

ngOnDestroy() {    
   this.dataService.connection.stateChanged(null);
}