我正在尝试扩展Angular 5与SignalR(jquery)的现有集成的行为。 我正在建立连接:
this.connection = $.hubConnection(url);
和中心代理
this.hub = this.connection.createHubProxy(hubName);
订阅中心代理后,我会收到通知
hub.On('my_method'..
在这种情况下,我可以从订阅的函数访问角度范围,但是一旦尝试通过连接事件实现自动重新连接功能-失败,我将无法访问Angular字段
this.connection.disconnected(function() {
console.log('disconnected'); //works, is thrown to console
this.connection.start(); //throws error - this.connection is not defined
})
正如我从错误详细信息中看到的那样-jQuery有某种委托,以及我们如何订阅事件,但是由于某种原因,其余的都无法正常工作。 还有,令我沮丧的是,一旦我使用jquery hub代理从服务器订阅了通知,就可以访问所有这些字段
this.hub.on(...)
请对此提供建议。有没有人尝试实现自动重新连接。 微软建议的Standart实现很简单,但是当我需要访问存储在字段中的同一连接并且另一个原因是我需要递归时,它就无法正常工作。
感谢任何想法
UPD> 仍然不知道为什么这些事件中的任何一个都不能访问该范围,而是找到了另一种绑定我的事件的方式,该事件将具有访问权限:
this.connection.stateChanged((state: any) => {
switch (state.newState) {
case $.signalR.connectionState.disconnected:
console.log(this.connection); // has access, can do whatever I need
break;
}
});
仍然很高兴理解我的问题中的行为。 谢谢