Asp.net mvc 带Redis的SingnalR向特定ConnectionID发送消息
我正在将SingalR用于聊天应用程序。想和Redis一起玩吗 和信号器,但我找不到一个工作的例子,我可以发送消息到 特定连接ID。下面是适用于单个服务器实例的代码。 但当我把它变成一个有3个进程的网络花园时,它就不再像我的花园一样工作了 获取消息的服务器实例找不到connectionId 用于发送消息的目标用户标识Asp.net mvc 带Redis的SingnalR向特定ConnectionID发送消息,asp.net-mvc,redis,signalr,signalr-hub,backbone.signalr,Asp.net Mvc,Redis,Signalr,Signalr Hub,Backbone.signalr,我正在将SingalR用于聊天应用程序。想和Redis一起玩吗 和信号器,但我找不到一个工作的例子,我可以发送消息到 特定连接ID。下面是适用于单个服务器实例的代码。 但当我把它变成一个有3个进程的网络花园时,它就不再像我的花园一样工作了 获取消息的服务器实例找不到connectionId 用于发送消息的目标用户标识 集线器类中的ConnectionMapping实例将不会在不同的Signal server实例之间同步。您需要使用永久性外部存储,如数据库或Windows Azure表。有关更多详
集线器类中的ConnectionMapping实例将不会在不同的Signal server实例之间同步。您需要使用永久性外部存储,如数据库或Windows Azure表。有关更多详细信息,请参阅此链接:
private readonly static ConnectionMapping<string> _connections = new ConnectionMapping<string>();
public void Send(string sendTo, string message, string from)
{
string fromclientid = Context.QueryString["clientid"];
foreach (var connectionId in _connections.GetConnections(sendTo))
{
Clients.Client(connectionId).send(fromclientid, message);
}
Clients.Caller.send(sendTo, "me: " + message);
}
public override Task OnConnected()
{
int clientid = Convert.ToInt32(Context.QueryString["clientid"]);
_connections.Add(clientid.ToString(), Context.ConnectionId);
}
http://www.asp.net/signalr/overview/performance-and-scaling/scaleout-with-redis
https://github.com/mickdelaney/SignalR.Redis/tree/master/Redis.Sample