Javascript 信令客户端方法不一致地触发

Javascript 信令客户端方法不一致地触发,javascript,signalr,signalr-hub,signalr.client,Javascript,Signalr,Signalr Hub,Signalr.client,我有一个简单的signarproxy,上面有一个客户端方法。javascript如下所示: var proxy = $.connection.orderStatusUpdateEmitter; proxy.client.onOrderUpdated = function(order){ try { //This is only hit sometimes getCustomerOrders(userId) } catch (e) { } } proxy.conne

我有一个简单的signarproxy,上面有一个客户端方法。javascript如下所示:

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);
}
[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);
    }
}
似乎存在某种类型的争用条件,或者我做得不正确,因为onOrderUpdated的处理程序没有一致地命中。上面的实现有什么明显的错误吗

服务器上的my hub中没有发生任何特殊情况,如下所示:

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);
}
[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);
    }
}

请尝试以下操作,而不是分组 列表由带“,”分隔符的用户组成

string[] group = list.Split(',');

  for(int i=0; i < group.length; i++)

  Clients.User(group[i]).onOrderUpdated(obj);
string[]group=list.Split(',');
对于(int i=0;i
共享您的中心代码。@Madhu使用中心代码更新了“onOrderUpdated的处理程序未始终命中”,我认为这是一个群体问题。对
客户端尝试相同的方法。全部
而不是
客户端。组
。。。在
OnOrderUpdate
中查看它。调试事件将发生的组。