我正在使用SignalR將通知推送到角度應用程序。SignalR第一次連接正常,但重新連接啓動後,它不會完成重新連接
我以前工作過(雖然看起來有點多斑點),現在我遇到了更多關於重新連接的問題。
我已經到了盯着文檔的演示代碼的地步,而其他的代碼似乎並不像SignalR那樣在SignalR中工作。因此,我發佈了我的代碼,以查看是否有任何我擅自做錯的事情,使SignalR不能始終如一地工作並開始,重新連接和斷開連接。
我有一個通知服務,如下所示:
.factory('Notification', ['$rootScope', '$log', '$localstorage', 'User', 'ENV', 'Events',
function ($rootScope, $log, $localstorage, User, ENV, Events) {
var self = this;
this.proxy = null;
this.connection = null;
this.initializeSockets = function() {
self.connection = $.hubConnection(ENV.socketEndpoint, { useDefaultPath: true, logging: true })
self.connection.qs = { token: User.getToken() };
self.proxy = self.connection.createHubProxy('notificationEmitter');
self.proxy.on('onNotification', function (notification) {
$rootScope.$emit(notification.Topic, notification.Data);
});
if (self.connection.state === $.signalR.connectionState.disconnected) {
self.connection.start(function() {})
.done(function (conn) {
$log.info('Connected to notification emitter');
}).fail(function (a) {
$log.info('Unable to connect to connect:' + a)
});
}
self.connection.starting = function (data) {
$log.info('starting'); -> NEVER SEEMS TO GET CALLED
}
self.connection.disconnected = function (data) {
$log.info('disconnected'); -> NEVER SEEMS TO GET CALLED
setTimeout(function() {
proxy.connection.start();
}, 20000); // Restart connection after 5 seconds
};
self.connection.reconnecting = function (data) {
$log.info('reconnecting');
}
self.connection.reconnected = function (data) {
$log.info('reconnected');
}
self.connection.connectionSlow = function (data) {
$log.info('connectionSlow');
}
self.connection.error = function(error){
$log.info('Signal R Error:' + error);
}
}
$rootScope.$on(Events.userAuthenticated, function (event, user) {
self.initializeSockets();
})
return self;
}])
正如我所說,它似乎大多數的我第一次開始工作的同時連接,但第一個頁面刷新後(以後每次)我從SignalR日誌如下..