以下のマッピングリンクに示すように、ユーザーIDとその関連接続IDを格納するために、MVCプロジェクトにインメモリー記憶域マッピングを実装しました。問題は、他のサーバーサイドクラスのマッピングインスタンスにアクセスできず、特定のユーザーに通知を送信できないことです。通知を送信するには、HubまたはSendNotificationクラスを変更する必要があります。私にそれをする方法を教えてください。SignalR - 他のサーバーサイドクラスのユーザーマッピングにアクセスして特定のユーザーに通知を送信する方法
\\ here is the sample hub class with onconnected and disconnted same as in mapping link
public class NotificationHub : Hub
{
private readonly static ConnectionMapping<string> _connections = new ConnectionMapping<string>();
public void SendChatMessage(string who, string message)
{
string name = Context.User.Identity.Name;
foreach (var connectionId in _connections.GetConnections(who))
{
Clients.Client(connectionId).addChatMessage(name + ": " + message);
}
}
}
\\ other server class where to call hub
public class SendNotification
{
Public void SaveToDb(string userName, class entity)
{
// save to database call
// send Notification to User userName through SignalR if user Exists in Mapping
}
}
ここにSignalRマッピングリンク(https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/mapping-users-to-connections)があります。
ハブ外(https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/hubs-api-guide-server#callfromoutsidehub)にアクセスする方法は次のとおりです。