0
我有一個簡單的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);
}
}
份額集線器代碼.. – Madhu
@Madhu與集線器代碼 – TheJediCowboy
更新「爲onOrderUpdated處理程序並不一致點擊」我認爲它是一組問題。在'OnOrderUpdate'中試着用'Clients.All'代替'Clients.Group' ...來查看它。調試事件正在進行的組。 – DDan