gpt4 book ai didi

c# - 如何使用 signalR 向特定用户发送消息

转载 作者:太空狗 更新时间:2023-10-29 21:12:37 27 4
gpt4 key购买 nike

我的 signalR 有一些问题,我无法从集线器向特定用户发送消息。

我想这样做:

public void Send(string userToId, string userForId, string message)
{

IHubContext context = GlobalHost.ConnectionManager.GetHubContext<ChatHubs>();

//userForId - it is Session["UserId"]
context.Clients.User(userForId).updateMessages(message);
}

我已经读过这个主题:http://www.asp.net/signalr/overview/guide-to-the-api/mapping-users-to-connections , 但我不清楚,因为我没有这个 var name = Context.User.Identity.Name; 我在 Session 变量中有用户信息,第二个当我得到 connectionId 时: var myClientId = $.connection.hub.id; connectionId - 在我刷新页面或在我的项目中单击另一个菜单时更改。

我有一些问题:1) 我可以在没有 connectionId 的情况下向特定用户发送消息吗(仅使用 session["UserId"])?2) 一般而言,如何使用 SignalR 轻松地进行一对一消息传递?

附言我正在使用 ASP.NET MVC (C#)

最佳答案

您可以向所有没有连接 ID 的用户发送广播消息。您只需要为每个用户分配一个唯一 ID,并将其作为消息参数发送。

SignalR 给每个客户端一个唯一的 ID 作为连接 ID。您可以使用该连接 ID,也可以在创建客户端时为客户端分配唯一 ID 并将其用作连接 ID。这取决于你想使用什么。

编辑

只需在 Hub 类文件中更新您的方法......

     public void Send(string name, string message, string connectionid)
{
// Call the addNewMessageToPage method to update clients.
Clients.All.addNewMessageToPage(name, message, connectionid);
}

在您的客户端,您可以在包含 SignalR 文件后更新添加代码:-

        var chat = $.connection.chatHub;


chat.client.addNewMessageToPage = function (name, message, connectionid) {
if (connectionid == $('#connection').val()) {

// Do What You want Here...
};
};
// Get the user name and store it to prepend to messages.
$('#displayname').val(prompt('Enter your name:', ''));
$('#connection').val(prompt('Enter your ID:', ''));

// Set initial focus to message input box.
$('#message').focus();
// Start the connection.
$.connection.hub.start().done(function () {
$('#sendmessage').click(function () {
// Call the Send method on the hub.
chat.server.send($('#displayname').val(), $('#message').val(), $('#connection').val());
// Clear text box and reset focus for next comment.
$('#message').val('').focus();
});
});

希望这有助于...

关于c# - 如何使用 signalR 向特定用户发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28711919/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com