2017-05-31 15 views
0

私の人生の間、私はここで間違っていることを理解できません...私は、マルチユーザーポータルのための簡単な通知システムを構築しています。プッシュ通知を達成する。シグナルRクエリーストリングが渡されない

私は接続を確立し、すべてのユーザーにプッシュ通知をプッシュできますが、ユーザーIDを追跡してそのIDをサーバーのconnectionIdにマップする必要があることを通知する特定のユーザーをターゲットにします。これを達成するために、ユーザーのIDの暗号化された文字列をサーバーに渡し、作成した接続IDにユーザーのIDを保管するオブジェクトのリストを保管しています。ただし、暗号化されたUserIDをQuery文字列として渡そうとすると、その文字列は渡されません。私がここでうんざりしているアイデア?

Javascriptを

/////Connect to NotificationHub 

var nHub = $.connection.notificationHub; 
$.connection.notificationHub.qs = { "userId": "1A3BCF" }; 

////Register Add Notification Method 
nHub.client.showNotification = function (message, icon, url) { 
    console.log("Notification Received!"); 
    console.log("Message: " + message); 
    console.log("Icon: " + icon); 
    console.log("URL: " + url); 
}; 

$.connection.hub.start() 
.done(function() { 

    console.log("Successful Connection to Notification Hub"); 

}) 
.fail(function() { 
    console.log("Error Connecting to Notification Hub!"); 
}); 

C#ハブ

List<NotificationConnection> connectedUsers = new List<NotificationConnection>(); 

    public override Task OnConnected() 
    { 
     var us = new NotificationConnection(); 
     us.userId= Context.QueryString['userId'];; 
     us.connectionId = Context.ConnectionId; 
     connectedUsers.Add(us); 
     return base.OnConnected(); 
    } 

    public void showNotification(NotificationTargetType target, int objectId, string message, string icon, string url) 
    { 
     var hubContext = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>(); 

     if (target == NotificationTargetType.User) 
     { 
      var user = connectedUsers.Where(o => o.userId== objectId); 
      if (user.Any()) 
      { 
       hubContext.Clients.Client(user.First().connectionId).showNotification(message, icon, url); 
      } 
     } 
     else 
     { 

     } 

    } 

再び私は、クエリ文字列を取得したいまでは存在しないため、すべてがスムーズに通過します。

+1

ハブではなく接続時にqを設定してみてください。 – Pawel

+0

これは誤字ですか: 'Context.QueryString ['userId'];'?二重引用符でなければならない – CodingYoshi

+1

@Pawelあなたは正しい道を私に導いた。ありがとうございました。私は以下の変更を加えました –

答えて

0

Pawelが述べたように私は間違った項目にqsを追加していました。実際のハブの代わりにconnection.hubで呼び出す必要がありました。

$.connection.hub.qs = { "userId": "1A3BCF" }; 

ありがとうございます。

関連する問題