SignalR客户端方法不一致开始
问题描述:
我有一个简单的SignalR代理,其上有一个客户端方法。 JavaScript的看起来如下:SignalR客户端方法不一致开始
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);
}
}
答
请尝试以下,而不是集团 列表是由用户提供“”分隔符。
string[] group = list.Split(',');
for(int i=0; i < group.length; i++)
Clients.User(group[i]).onOrderUpdated(obj);
份额集线器代码.. – Madhu
@Madhu与集线器代码 – TheJediCowboy
更新“为onOrderUpdated处理程序并不一致点击”我认为它是一组问题。在'OnOrderUpdate'中试着用'Clients.All'代替'Clients.Group' ...来查看它。调试事件正在进行的组。 – DDan