bil*_*ial 6 asp.net broadcast subscription signalr angular
我有多个Angular
订阅SignalR
集线器连接的组件。我已将SignalR
集线器连接对象包装到一个角度服务中hubconnection.service.ts
:
import { Injectable } from '@angular/core';
import { HubConnectionBuilder, HubConnection } from '@aspnet/signalr';
@Injectable()
export class HubConnectionService {
public MyHubConnection: HubConnection;
constructor() {
this.MyHubConnection = new HubConnectionBuilder()
.withUrl('/sensorHub')
.build();
this.MyHubConnection
.start()
.then(() => console.log('[HubConnectionService] Connection started'))
.catch(err => console.log('[HubConnectionService] Error while starting connection: ' + err));
}
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个组件,我想从中订阅通过SignalR
集线器接收的数据,为此我导入我的SignalR
包装器,并在构造函数中调用该.on()
方法。要取消订阅该事件,我调用.off()
析构函数中的方法:
export class RawdataComponent implements OnInit {
constructor(private hubConnectionService: HubConnectionService) { }
ngOnDestroy() {
this.hubConnectionService.MyHubConnection.off('Broadcast');
}
ngOnInit() {
this.hubConnectionService.MyHubConnection.on('Broadcast',
function(sender, message) {
console.log('New message received: ' + message);
});
}
}
Run Code Online (Sandbox Code Playgroud)
当我最初访问此组件描述的页面时,一切都按预期工作(console.log()
正在记录我收到的每条消息)。
当我离开页面时,MyHubConnection.off('Broadcast');
被调用。然后我再次访问上一页后,调用了构造函数并进行了另一个订阅,但是前一个没有关闭,我收到了两次console.log()
调用。
我犯的错误在哪里?MyHubConnection.off('Broadcast');
离开页面时不应该关闭当前订阅吗?
归档时间: |
|
查看次数: |
798 次 |
最近记录: |