2013-03-20 17 views

cevap

49

Orada JS veya .NET istemcisi kullanarak SignalR istekleri için HTTP başlıklarını ayarlamak için kolay bir yoldur, ancak her SignalR isteğinin parçası olarak gönderilecektir sorgu dizesi parametreler ekleyebilir:

JS Müşteri

$.connection.hub.qs = { "token" : tokenValue }; 
$.connection.hub.start().done(function() { /* ... */ }); 

NET Müşteri

var connection = new HubConnection("http://foo/", 
            new Dictionary<string, string> 
            { 
             { "token", tokenValue } 
            }); 

Hub İçerisinde Bağlamında yoluyla topluluk adını erişebilirsiniz: yanı kalıcı bağlantılar yaparken

Context.QueryString["token"] 

Sorgu dizesine ekleyebilir.

DÜZENLEME: Artık .NET SignalR istemcisindeki üstbilgileri, bazı yorumcular tarafından belirtildiği gibi ayarlamak mümkündür. .NET Client üzerinde

Ayar Başlıkları

var connection = new HubConnection("http://foo/"); 
connection.Headers.Add("token", tokenValue); 
+0

Teşekkürler!Evet, o zaman bağlantı için ek paramları geçmek için tek yol gibi görünüyor. –

+4

SignalR 1.1.0beta'nın en son sürümü ayar başlıklarını destekliyor. En son paketleri NuGet'ten alabilirsiniz. –

+0

Başlığın nasıl ayarlanacağına dair bir belge bulamıyorum. Beni bir yöne yönlendirebilir misin? –

12
Sen (@abnanda bahseder gibi) .NET istemcisi kullanarak Bağlantı veya HubConnection ya üzerinde üstbilgi ekleyebilirsiniz

:

var connection = new Connection("http://signalr/"); 
connection.Headers.Add("custom-header", "value"); 

Sunucu tarafında, örneğin IRequest'ten başlık değerini alabilirsiniz. OnConnected:

var header = request.Headers["custom-header"]; 

Ancak henüz JS istemcisi ile bunu yapmanın bir yolunu bulamadı ($ bağlantısı nesne üzerinde hiçbir başlıklarını veya addHeaders yoktur). http://forums.asp.net/t/1910020.aspx/1?Add+custom+HTTP+header+on+client+side+connect+call+SignalR+1+1+1+

EDIT:

Bu işte bir soru gönderdiniz başlıkları (tarayıcıda) WebSocket istemcisi beri maruz kalmaması bu özelliği desteklemiyorsa (yani taşıma genelinde uygulamak mümkün olmazdı) . Yukarıdaki gönderide David Fowlers yanıtını görün.

3

Bu bilgileri,numaralı IConnected.Connect() yönteminde bulunan bilgilerime ekleyerek çözdüm.

$.connection.hub.qs = "myInfo=12345"; 

Daha sonra sunucu üzerinde bu bilgilere erişebilir: .NET Ýstemcide

Bağlantıyı başlamadan önce qs özelliğini ayarlayın JS Ýstemcide querystring into your HubConnection:

var connection = new HubConnection("http://localhost:8080/", "myInfo=12345"); 

geçmesi Connect() yönteminde:

var myInfo = Context.QueryString["myInfo"]; 
Groups.Add(Context.ConnectionId, myInfo); 
+0

Akıllı numara. Şimdi hayatımı kurtardın. teşekkür ederim – Jacob