2014-12-30 36 views
5

kullanılarak çalışmıyor. SinyalR kullanarak sunucudan belirli bir istemciyi bilgilendirmek istedim, ancak çalışmıyordu. Kodum başarıyla yürütüldü, ancak istemci dozu sunucudan herhangi bir çağrı almadı. Bununla birlikte, bu, tüm istemci için çalışmaktadır.Sunucudan belirli bir istemciye mesaj gönderme, SignalR 2 ve MVC 4.0

var hubContext = GlobalHost.ConnectionManager.GetHubContext<ProcessStatusNotifyHub>(); 
hubContext.Clients.All.notify("Got it!"); 

Ama bu özel müşteri için çalışmıyor [Kod Güncelleme]

$(function() { 
     // Reference the auto-generated proxy for the hub. 
     var chat = $.connection.processStatusNotifyHub;//chatHub; 
     chat.client.notify = function (msg) { 
      alert(msg); 
     } 
     // Start the connection. 
     $.connection.hub.start().done(function() { 
      var myClientId = $.connection.hub.id; 
      console.log('connected: ' + myClientId); 
      $('#sendmessageToClient').click(function() { 
       //chat.server.send('imdadhusen', 'This is test text'); 
       $.ajax({ 
         url: '@Url.Action("Send", "PushNotification")', 
         type: 'POST', 
         data: { 'clientID': myClientId }, 
         dataType: 'json', 
         success: function (result) { 
          alert(result.status); 
       } 
       }); 
      }); 
     }); 
}); 

ardından kod Kontrolörü

[HttpPost] 
public ActionResult Send(string clientID) 
     { 
      var hubContext = GlobalHost.ConnectionManager.GetHubContext<ProcessStatusNotifyHub>(); 
      //hubContext.Clients.All.notify("Got it!"); 
      hubContext.Clients.User(clientID).notify("Got it!"); 

      responseResult result = new responseResult(); 
      result.status = "OK"; 
      result.message = "Notification sent successfully"; 
      return Json(result, JsonRequestBehavior.AllowGet); 
     } 

yazılır chat.cshtml yazılmış kod takiben .cstml veya contro'da istemci kimliğinin doğru değerini gösteren kodu hata ayıklamayı denedim lloer. Örneğin. clientid : 0fdf6cad-b9c1-409e-8eb7-0a57c1cfb3be

Sunucudan belirli bir istemciye bildirim göndermede bana yardımcı olabilir misiniz?

+0

ile geçerli kullanıcı kimliği Can alabilirsiniz tam kontrolörü sağlamak? Sağladığınız kod, gerçekleştirmeye çalıştığınız işlem için connectionId'nin doğru kapsamda olup olmadığını net değil. –

+0

@Steve Referansınız için güncellenmiş kodu okudum, Lütfen aynı konuda daha fazla ayrıntıya ihtiyacınız olduğunu bildirin. – imdadhusen

+0

Güncelleme için teşekkürler. Sunucuda hata ayıkladığınızda, clientID beklediğiniz değere mi ayarlandı? –

cevap

0

Bu, sorunuzun bir cevabı değil, kodunuzdaki bir öneridir. İstemci, sunucuyu aramak için neden Signalr bağlantısını kullanmıyor? Sadece merkezde bir müşterinin arayabileceği bir yöntem tanımlayın. Sonra bu yöntemde id almak için HubCallerContext kullanın. http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client

Sonra Merkezi'nin yönteminde:

Bu sayfa nasıl istemciden sunucuya çağrı gösterir

Clients.User(Context.ConnectionId).notify("Got it!"); 
1

operasyon hubContext.Clients.User(string) akım HTTP isteğinin Kullanıcı Kimliğini bekliyor, SignalR'nin müşteri kimliği değil. Bu işlemi kullanmak istemci kimliğini kullanmak isterseniz

: Geçerli kullanıcı tarafından erişmek istiyorsanız

hubContext.Clients.Client( ) 

, o zaman bu

string UserID=User.Identity.GetUserId() 
İlgili konular