SignalR 1.0.1“群组消息”;不能在生产服务器上工作

本文关键字:不能 服务器 工作 群组消息 消息 SignalR | 更新日期: 2023-09-27 18:10:06

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

当我这样做的时候:

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

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

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

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

为了使连接进入正确的组,我在每个SignalR连接开始时调用Hub上的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;
        }
    }
    ...
有谁能帮我吗?

SignalR 1.0.1“群组消息”;不能在生产服务器上工作

解决这个问题的方法如下:

  1. 我在我的Hub上使用HubName属性,这是SignalR的一个错误。
  2. 我使用会员资格提供程序的昵称来查找配置文件。但因为绰号"威廉"在多个域名上注册,所以返回了错误的ProfileID。

所以,如果你有和我一样的问题,试着把你的客户端添加到一个硬编码组(如"test")。如果它工作,那么你就知道问题出在你自己的代码上。

谢谢David Fowler!

相关文章: