【问题标题】:Retrieve names of Online users connected to a Server检索连接到服务器的在线用户的名称
【发布时间】:2012-11-24 10:54:07
【问题描述】:

我之前问过这个question,得到了很好的回应。但由于我是 asp.net(和 jquery)的新手,所以无法理解程序是如何流动的。

总结:

我创建了一个基本的聊天应用程序。现在我正在尝试添加一个高级功能,例如每当用户在线(连接到服务器)时,服务器应该向连接到该服务器的所有用户显示或广播可用的在线用户的用户名。

通过参考上一个问题的回复(s0nicaVinayC),我修改了我的 class 文件和 jquery 文件,它们给出了如下链接所示的错误。 (我觉得我很接近了)

Chat.cs两个错误,我提到了代码 cmets 之间的错误
file.js工作正常,如果需要可以参考

请查看以上文件并帮助我。

PS:在上一篇文章中,我在想,如果我更改 Global.asax 代码,我的问题就会解决..后来我意识到这是错误的..

【问题讨论】:

  • 在您的User 类中,有一个带有两个参数的构造函数。因此不会生成默认构造函数。您正在尝试使用不存在的默认构造函数。

标签: asp.net signalr


【解决方案1】:

您的第一个错误来自:

Clients.joins(Context.ConnectionId, Caller.username, DateTime.Now);

应该是:

Clients.All.joins(Context.ConnectionId, Clients.Caller.username, DateTime.Now);

与它相关的其他错误:在您的 JS 文件中,它应该是: 第 15 行

chat.state.username = chatUsername;

第二个错误: 该错误与它所说的完全一样,您的字典对象没有 toList 函数。其次,您不能将 List 或字符串直接转换为 Chat 对象。

根据您的设置,您目前没有要返回的正确“用户”列表。现在,您正在保存一个列表来代表单个用户。您可能想尝试将您的字典对象更改为类似

static ConcurrentDictionary<string, User> _users = new ConcurrentDictionary<string, User>();

用户在哪里:

public class User
{
    public string Name { get; set; }
    public string ConnectionID { get; set; }
}

然后在您的 Joined 功能上,您可以这样做:

public void Joined()
{
    User user = new User 
    { 
        Name = Clients.Caller.username,
        ConnectionID = Context.ConnectionId
    };

    _users.TryAdd(user.ConnectionID, user);
    Clients.All.joins(user.ConnectionID, user.Name, DateTime.Now);
}

最后你的 GetConnectedUsers 会结束(确保你正在使用 System.Linq;'):

public List<User> GetConnectedUsers()
{
    return _users.Values.ToList();
}

我可能有点过火了,但希望这会有所帮助!

如果您需要参考从 SignalR 0.5.3 到 1.0 alpha 的更改日志,这里有一篇关于所有修改的精彩帖子: http://weblogs.asp.net/davidfowler/archive/2012/11/11/microsoft-asp-net-signalr.aspx

【讨论】:

  • 我也会这样做,我只想提一下字典应该是静态的(或在更高的上下文中管理良好),否则您最终会得到许多只有一个用户的字典实例。
  • 我可能也应该使用 ConcurrentDictionary,很快就把这篇文章放在一起。
  • 现在你在炫耀 :D ,开个玩笑,是的,它既是最先进的又是优雅的 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
  • 2021-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-15
相关资源
最近更新 更多