У меня есть простой прокси SignalR с единственным клиентским методом. Javascript выглядит следующим образом:Метод SignalR Client не работает постоянно
var proxy = $.connection.orderStatusUpdateEmitter;
proxy.client.onOrderUpdated = function(order){
try {
//This is only hit sometimes
getCustomerOrders(userId)
} catch (e) {
}
}
proxy.connection.start().done(function(c){
$log.info('Connected to order status update emitter');
});
proxy.connection.disconnected = function(data){
$log.info('disconnected');
setTimeout(function() {
proxy.connection.start();
},20000);
}
Похоже, есть некоторый тип гонки условия или я делаю это неправильно, потому что обработчик onOrderUpdated
последовательно не ударил. Что-нибудь в этом роде неправильно?
Там нет ничего особенного не случилось в моем хаба на сервере, он выглядит следующим образом:
[AuthorizeClaims]
public class OrderStatusUpdateEmitter : Hub
{
private static string _groupIdentifier = "OrderStatusUpdate";
public override Task OnConnected()
{
var identity = Context.Request.Environment["user.identity"] as AuthenticatedUserIdentity;
Groups.Add(Context.ConnectionId, string.Format("{0}-{1}", _groupIdentifier, identity.UserId));
return base.OnConnected();
}
public override Task OnReconnected()
{
var identity = Context.Request.Environment["user.identity"] as AuthenticatedUserIdentity;
Groups.Add(Context.ConnectionId, string.Format("{0}-{1}", _groupIdentifier, identity.UserId));
return base.OnReconnected();
}
public static string GetGroupIdentifier()
{
return _groupIdentifier;
}
public Order OnOrderUpdate(Order order)
{
Clients.Group(String.Format("{0}-{1}",GetGroupIdentifier(),
order.CustomerId)).onOrderUpdated(obj);
}
}
доля ваш хаб код .. – Madhu
@Madhu обновляется с кодом хаба – TheJediCowboy
«обработчик для onOrderUpdated последовательно не хит» Я предполагаю, что это проблема группы. Попробуйте то же самое с 'Clients.All', а не' Clients.Group' ... в 'OnOrderUpdate', чтобы увидеть его. Отладка для каких групп событие происходит. – DDan