【问题标题】:SignalR 1.0.1 "group messages" not working on production serverSignalR 1.0.1“组消息”在生产服务器上不起作用
【发布时间】:2017-05-14 19:15:50
【问题描述】:

我在 SignalR 中创建了一个聊天应用程序 (.NET MVC4),它在我的开发机器上运行良好。但是当我将它上传到我们的生产服务器时,我的客户端没有收到任何对“组”的调用。

当我这样做时:

var context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
context.Clients.All.addOnline(profielidVan);

效果很好!但是当我这样做时:

var context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
context.Clients.Group(profielidNaar).addOnline(profielidVan);

我的客户没有接到任何电话。

为了连接到正确的组,我在每个 SignalR 连接开始时调用集线器上的一个名为 Join() 的函数:

$(function () {

    var chat = $.connection.Chat;

    chat.client.addOnline = function (profielid) {
        if ($("#profielidNaar").val() == profielid) {
            var now = new Date()
            $("#onlinetime").val(now);
            $('#typtbericht').html('Online');
        }
    };

    // ... code to the other jQuery functions called by SignalR ...

    $.connection.hub.start().done(function () {

         chat.server.join();

         // ... code to the page jQuery functions (like $(window).resize) ...

    }
}

以及服务器端代码:

[HubName("Chat")]
public class ChatHub : Hub
{
    public Task Join()
    {
        if (HttpContext.Current.User.Identity.IsAuthenticated)
        {
            Profiel_DataHelper profiel = new Profiel_DataHelper(HttpContext.Current.User.Identity.Name);
            return Groups.Add(Context.ConnectionId, profiel.ProfielID.ToString());
        }
        else
        {
            return null;
        }
    }

    ...

谁能帮帮我?

【问题讨论】:

  • 那么显示代码将暗示用户未经过身份验证,该站点使用什么形式的身份验证?
  • 我正在使用标准的会员资格提供者身份验证。但是用户已通过身份验证,这不是问题,如果用户未通过身份验证,页面将不会显示。否则问题也会出现在我的开发机器上。

标签: c# .net asp.net-mvc-4 signalr


【解决方案1】:

好的,解决这个问题的原因如下:

  1. 我在 Hub 上使用了 HubName 属性,这是 SignalR 的错误。
  2. 我使用会员提供者的昵称来查找个人资料。但由于昵称“Willem”在多个域上注册,它返回了错误的 ProfileID。

因此,如果您遇到与我相同的问题,请尝试将您的客户端添加到硬编码组(例如“测试”)。如果可行,那么您就会知道问题出在您自己的代码上。

感谢大卫·福勒!

【讨论】:

    猜你喜欢
    • 2019-05-01
    • 2015-11-24
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 2020-05-20
    • 2014-06-15
    • 1970-01-01
    相关资源
    最近更新 更多