Signalr 信号员个人聊天

Signalr 信号员个人聊天,signalr,Signalr,我对信号机还是新手。我想用signal创建聊天应用程序,但个人聊天和群组有问题,因为每次用户重新连接时,连接id总是会更改 问题:我们如何知道哪个id用户引用了特定用户。如果连接id总是更改。 (因为如果用户在浏览器中打开另一个选项卡,信号员会将他们识别为另一个用户。我们如何知道id是同一个人) signar中是否有我们可以保存在数据库中的唯一属性,以便用户登录时能够识别用户?signar正在做它应该做的每一次连接/重新连接。您的用户正在建立新连接,因此他们将获得新的连接ID 如果它们在将创建新

我对信号机还是新手。我想用
signal
创建聊天应用程序,但个人聊天和群组有问题,因为每次用户重新连接时,连接id总是会更改

问题:我们如何知道哪个id用户引用了特定用户。如果连接id总是更改。 (因为如果用户在浏览器中打开另一个选项卡,信号员会将他们识别为另一个用户。我们如何知道id是同一个人)


signar
中是否有我们可以保存在数据库中的唯一属性,以便用户登录时能够识别用户?

signar正在做它应该做的每一次连接/重新连接。您的用户正在建立新连接,因此他们将获得新的连接ID

如果它们在将创建新连接的新选项卡中打开。您必须确定当前正在连接的用户以及您希望如何处理


如果您查看,您可以看到他们有将用户映射到连接的示例。

您可以使用登录用户的
用户名。根据您使用的技术,您可以使用不同的方法。我在MVC中的做法如下:
枢纽:

视图:

发送方用户名可以通过@User.Identity.Name(在MVC中)获得,接收方用户名可以在发送方打开接收方聊天时读取

更新
关于Asp.Net Web表单,请检查以下内容是否有帮助:

你是说IUserID提供者?因为如果我不使用mvc,我不知道如何使用它。先生,还有别的选择吗?我使用普通网络表单(.aspxfile)(对不起,我也不知道我是用户的技术的名称)谢谢您先生应用我的问题。从现在起,我开始意识到这一点。我想使用Clients.User(“用户名”).someMethodinClient。但我不知道如何在客户端设置用户名值(可能在js脚本中(我不知道准确程度)),因此当服务器从客户端调用Clients.User(“userName”).someMethodinClient时,服务器将知道必须调用哪个客户端。我不知道应该将代码放在何处(公共接口IUserIdProvider)。以及如何从客户端设置id
 public class ChatHub :Hub
    {
        public void SendMessage(string sender,string receiver, string msg)
        {
            MessageService messageService = new MessageService();
            long msgId = messageService.Add(sender, receiver, msg);
            Clients.User(receiver).receiveMessage(sender, msg, msgId);
            Clients.User(sender).receiveMessage(sender, msg, msgId);
        }
    }
   $('#send').click(function () {
        hub.invoke("SendMessage", "@User.Identity.Name", "@ViewBag.Receiver", $('#message').val());
    });