2012-11-02 20 views
8

ASP.NET MVC uygulamaları için SignalR öğrenmek için eğlenceli bir proje olarak SignalR kullanarak bir kullanıcı izleme çözümü geliştiriyorum.SinyalR hub içinde tam URL alın

Şu anda kayıtlı kullanıcıları ve belirli bir sayfada ne kadar beklediklerini takip edebiliyorum. Başka bir sayfaya geçerlerse, bunu ve SinyalR'nin resetleri güncellediği zamanlayıcıyı izlerim ... Diğer birçok özellik uygulanır veya kısmen uygulanır.

Karşılaştığım sorun, DirectRD Denetleyici/İşlem/Parametre SinyalR hub içinde nasıl elde edilir?

HttpContext.Current.Request.Url'u kullandığımda, url her zaman /signalr/connect'dir.

NOT:

var hub = $.connection.myHub; 
$.connection.hub.start(); 

_Layout.cshtml içindedir.

GÜNCELLEME:

Ben

var location = '@HttpContext.Current.Request.Url'; 
var hub = $.connection.myHub; 
$.connection.hub.start().done(function() { 
    hub.setLocation(location); 
}); 

kullanmayı denedim Ve konumu doğru geçirilir ama en geç Bağlan() görev olması gerekiyor. Bunu yapmak mümkün mü?

GÜNCELLEME 2: Bu yaklaşım Connect() olarak

var hub = $.connection.myHub; 
$.connection.hub.start(function(){hub.setLocation(location)}); 

çalışmıyor

önce denir.

Merkezimde birkaç yöntem var ancak bir değeri (konumumda) Connect()'a aktarmak istiyorum, bu mümkün mü? Connect() oluşmadan önce

public class MyHub : Hub, IDisconnect, IConnected 
{ 
    public Task Connect() 
    { 
     //do stuff here 
     //and i would like to have the **location** value 
    } 

    public Task Disconnect() 
    { 
     //do stuff here    
    }    
} 

Güncelleme 3

Kullanım QueryString veri iletmek için.

var location = '@HttpContext.Current.Request.Url'; 

var hub = $.connection.myHub; 
$.connection.hub.qs = "location= + location; 
$.connection.hub.start(); 
+0

merhaba olmayan IIS barındıran bir görünüm için, IIS üzerinde çalışacak onun kodunu paylaşan mahzuru yapmak ... hala ... bu izleme çözüm üzerinde çalışıyoruz? –

+0

@jalchr NDA'nın aklına bile gelmeyecek; (Eğer herhangi bir sorunuz varsa lütfen doğru yönde yardımcı olacağım/işaret edeceğim. –

+0

ipucu: kullanıcı takibi için, sayfanın tamamen yüklenmesinden hemen önce SignalR'nin bağlandığından emin olmalısınız. resources: 'waitForPageLoad' bu yüzden şunu ayarladığınızdan emin olun: http://stackoverflow.com/questions/32856436/signalr-is-slow-to-connect-from-javascript-client/32856492#32856492 –

cevap

1

İstemci js çağrısından hub'ınıza parametre olarak iletebilirsiniz.) (Bağlantı konum değeri gibi veri Geçme

+0

Cevabınız için teşekkürler. Bu soruna herhangi bir çözüm? –

+0

bunu başlatamaz mısın(), bu yeterince erken, örn. hub.start (funcoint() {hub.setLocation (location);}) – dove

+0

Bağlan() görev, tam olarak bununla ne demek istediğimi anlayamadım – dove

1

sorgu dizesi kullanmak çok güvenli değildir, JS kodu sahte ve size ne olursa olsun mantığı yanlış konum kırılmasını gönderebilir bir hacker neden onun arkasında var.

Sen

var underlyingHttpContext = Context.Request.Environment[typeof(HttpContextBase).FullName] as HttpContextBase;

Sonra ne gerekiyorsa ayıklamak Owin-enviromment değişkenlerden bu olsun deneyebilirsiniz.

diğer Owin şeyler https://github.com/aspnet/AspNetKatana/wiki/OWIN-Keys