2013-03-03 56 views
0

所以我使用SignalR版本.5,一切工作正常。但嘗試升級到版本1以使用connectionSlow方法。不幸的是,當我升級時似乎已經破裂。我有一個mvc應用程序,並且我試圖使用signalr將數據推送到客戶端。我希望連接永遠開放。不能接收消息錯誤的上下文connectionid

服務器不會向客戶端發送消息。在使用LoggingPiplineModule進行一些調查後,我發現context.Connection.Identifier不是所連接的瀏覽器的連接標識符,它正在嘗試將其發送給其他人。

我中心只有幾個方法:

public void JoinGroup(string groupID) 
    { 
     if (!String.IsNullOrEmpty(Context.User.Identity.Name) && (!String.IsNullOrEmpty(groupID))) 
     { 
      Groups.Add(Context.ConnectionId, groupID.Trim()); 
     } 
     else 
     { 
      LoggerSingleton.Instance.Logger.Error("Error: Could not join group as user is not logged in or group is null"); 
     } 
    } 

    public void LeaveGroup(string groupID) 
    { 
     if (!String.IsNullOrEmpty(Context.User.Identity.Name) && (!String.IsNullOrEmpty(groupID))) 
     { 
      Groups.Remove(Context.ConnectionId, groupID.Trim()); 
     } 
     else 
     { 
      LoggerSingleton.Instance.Logger.Error("Error: Could not leave group as user is not logged in or group is null"); 
     } 
    } 
    public static void SendCallLog(CallLog newCall, int groupID) 
    { 
     var context = GlobalHost.ConnectionManager.GetHubContext<CommandCentreHub>(); 
     context.Clients.Group(groupID.ToString()).addMessage(CallLog.ToJson(newCall), groupID.ToString()); 
    } 

而且我的javascript:

conChat = $.connection.commandcentrehub; 

// Push method for signalR, process the pushed message passed from the server 
conChat.addMessage = function (message, groupID) { 
    var call = JSON.parse(message); 
    updateTableImages($('#groupContent' + groupID), call, groupID); 
    updateTableImages($('#groupContent' + 'All'), call, 'All'); 

    applyFilter(); 
}; 

$.connection.hub.start().done(function() { 
    $('.groupID').each(function() { 
    conChat.server.joinGroup(this.id.replace("group", "")); 
}); 
}); 

而且我的Global.asax

protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 

     WebApiConfig.Register(GlobalConfiguration.Configuration); 
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 

     RouteTable.Routes.MapHubs(); 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
     BundleConfig.RegisterBundles(BundleTable.Bundles); 

     GlobalHost.HubPipeline.AddModule(new LoggingPipelineModule()); 

     log4net.Config.XmlConfigurator.Configure(); 
    } 

我得到了Chrome瀏覽器開發沒有錯誤, joingroup工作正常,但是當服務器調用addMessage時,我什麼也得不到。

回答

0

好的我解決了這個問題。 這是我的JavaScript。

以下:

conChat.addMessage = function (message, groupID) { ... 

應該是:

conChat.client.addMessage = function (message, groupID) { 

希望這可以幫助別人...