チャット アプリケーションに SingalR を使用しています。Redis と SignalR を試してみたかったのですが、特定の connectionId に msg を送信できる実際の例が見つかりません。単一のサーバーインスタンスで機能する以下のコード。しかし、3 つのプロセスを持つ Web ガーデンにすると、メッセージを取得するサーバー インスタンスがメッセージを送信する宛先 UserId の connectionId を見つけることができないため、動作が停止します。
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