我可以添加例如用户名而不是connection.id 吗?它有效吗?我问这个是因为通过 ConnectionId 我无法向用户发送通知,因为 ConnectionId 总是在变化?
Groups.Add("my_username", "mygroup1);
我可以添加例如用户名而不是connection.id 吗?它有效吗?我问这个是因为通过 ConnectionId 我无法向用户发送通知,因为 ConnectionId 总是在变化?
Groups.Add("my_username", "mygroup1);
不,您不能,您必须使用 ConnectionID。但是,您可以执行以下操作。
在您的集线器上存储映射到连接 ID 的用户列表:
static ConcurrentDictionary<string, User> _users = new ConcurrentDictionary<string, User>();
然后在启动客户端连接后,您可以调用如下方法:
myHub.server.createUser("MyUsername");
当然,在您拥有的服务器上:
public void createUser(string userName)
{
// You'd create a User class that had both of the following properties
var user = new User
{
UserName = userName,
ConnectionID = Context.ConnectionId
};
_users.TryAdd(user.ConnectionID, user);
}
因此,每当您想通过连接 ID 查找用户时,您仍然可以通过 _users 字典获得他/她的用户名的上下文。
注意:此代码通过 signalr 1.0 alpha + 工作