如何通过将SignalR与ASP.NET MVC 5一起使用将消息共享给特定客户端?

问题描述

我正在尝试在示例聊天应用程序中实现一个小型演示。

我在ASP.NET MVC5应用程序中使用SignalR,但是在向特定/单个客户端发送消息时发现了一些问题。

public class ChatHub : Hub
{
        string connectionId = "";     

        public string GetConnectionId()
        {
            return connectionId;
        }
        
        public override Task OnConnected()
        {
            connectionId = Context.ConnectionId;        
            return base.OnConnected();
        }
}

public class Common
{   
        public static void Send(string name,string message,string connectionId)
        {     
            IHubContext Context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();       
            Context.Clients.Client(connectionId).addNewMessagetoPage(name,message);
        }           
}

我不想将其设为静态

public string GetConnectionId()
{
    return connectionId;
}

然后如何将connectionId发送到

Common.Send(name,message,connectionId)

在ASP.NET MVC控制器中被调用

有什么更好的建议/推荐吗?

使用ASP.NET MVC 5和SignalR 2.4.1构建的应用程序。

我正在为我的演示应用程序使用此链接。您可以在https://docs.microsoft.com/en-us/aspnet/signalr/overview/getting-started/tutorial-getting-started-with-signalr-and-mvc

上查看与源代码相关的所有详细信息。

输出:我试图遵循指南并查看示例实现,但无法解决问题。

大多数人说您无法使用GetHubContext

看到

https://github.com/aspnet/SignalR/issues/2274#issuecomment-389227033 https://github.com/aspnet/SignalR/issues/2274#issuecomment-389013456 Connection ID when calling SignalR Core Hub method from Controller

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)