为了在一个基本的本教程 MVC 4模板项目上添加一个ASP.NET MVC SignalR聊天页面,我虔诚地跟踪了ASP.NET。而不是使用本教程中的以下方法让用户向所有其他用户发送消息:
public void Send(string name, string message)
{
Clients.All.addNewMessageToPage(name, message);
}我创造了我自己的,如下:
public void Send(string senderName, string recipientName, string message)
此变体允许用户发送消息,以显式命名聊天室中的其他用户(我的用户必须登录聊天)。由于用户可以传递收件人的名称,我如何找到与该用户名相对应的客户端?换句话说,如何从我的ApplicationUser方法中找到具有UserName的已登录的Send?
发布于 2014-08-10 18:42:12
您确实可以将用户映射到连接ID,但在某些情况下,如果您想为特定用户调用函数,也可以使用User(string userId)方法,该方法存在于集线器中的客户端属性上:
public void Send(string senderName, string recipientName, string message)
{
Clients.User(recipientName).addNewMessageToPage(senderName, message);
}注意,虽然这个方法的参数名是"userId",但是您应该在这里传递用户名。这让我吃惊,当我第一次使用这种方法。
此功能仅在SignalR 2.0+中可用,有关详细信息,请参阅这里,包括在SignalR集线器中跟踪连接用户的其他方法。
https://stackoverflow.com/questions/25225373
复制相似问题