您的第一个错误来自:
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