2017-06-10 9 views
0

以下のマッピングリンクに示すように、ユーザー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)にアクセスする方法は次のとおりです。

答えて

1

バックプレーンのドキュメントはありますか? https://docs.microsoft.com/en-us/aspnet/signalr/overview/performance/scaleout-in-signalrを参照してください。

多くのSignalRクライアントを持つマルチインスタンスWeb層があります。 Web層のインスタンスは、任意のブラウザクライアントと通信できます。ハブのコードは変更されません。起動時に追加のロジックがあります。上記のドキュメントを参照してください。

関連する問題