0

所以我使用的是 SignalR 0.5 版,一切正常。但尝试升级到版本 1 以使用 connectionSlow 方法。不幸的是,当我升级时它似乎已经坏了。我有一个 mvc 应用程序,我正在尝试使用 signalr 将数据推送到客户端。我希望连接永远打开。

服务器不会向客户端发送消息。在使用 LoggingPiplineModule 进行一些调查后,我发现 context.Connection.Identifier 不是所连接浏览器的 connextionID,它好像在尝试将其发送给其他人。

我的 Hub 只有几个方法:

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 dev 中没有收到任何错误,并且 joingroup 工作正常,但是当服务器调用 addMessage 时,我什么也没得到。

4

1 回答 1

0

好的,我解决了这个问题。这是我的javascript。

下面:

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

应该:

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

希望这可以帮助某人...

于 2013-03-03T23:52:47.223 回答