2012-09-18 21 views
19

Ich implementiere die Connect() Methode auf IConnected Schnittstelle, um neue Verbindungen zu den richtigen Gruppen hinzuzufügen. Das funktioniert gut, bis auf eine Sache: Um den Benutzer der richtigen Gruppe hinzuzufügen, muss ich einen Wert senden, der in dieser Methode gelesen werden soll. Ich habe versucht, das Hinzufügen Eigentum an den Client-Hub:SignalR: So senden Sie Daten an IConnected.Connect()

var uIHub = $.connection.uIHub; 
uIHub.SessionType = "Edit"; 

Aber es ist nicht zugänglich von der Connect Methode:

if (string.IsNullOrEmpty(Caller.SessionType) || Caller.SessionType == "Edit") { 
    sessionId = WAFContext.EditSession.SessionId.ToString();     
} else { 
    sessionId = WAFContext.ViewSession.SessionId.ToString(); 
} 
Groups.Add(Context.ConnectionId, sessionId); 

Caller.SessionType immer null ist.

Irgendwelche Vorschläge, wie man das löst?

Antwort

36

Ich löste das, indem ich meine Informationen zu der Querystring hinzufüge, die auf der IConnected.Connect() Methode verfügbar ist.

Auf der .NET-Client Sie die Abfragezeichenfolgeflag in Ihre HubConnection passieren:

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

Auf der JS-Client stellen Sie die qs Eigenschaft vor den Anschlussarbeiten:

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

Sie können dann Zugang Diese Information auf dem Server in der Connect() Methode:

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

Wissen Sie, wie Sie das gleiche mit dem Javascript-Client machen? Ich habe Folgendes versucht, aber es funktioniert nicht: var connection = $ .connection ("http: // localhost: 61806 /", "sessionType = besuchen"); var uIHub = connection.uIHub; –

+1

Dies sollte funktionieren: '$ .connection.hub.qs =" myInfo = 12345 "; $ .connection.hub.start(); ' –

+0

@akoeplinger ist es sicher, userid und username Parameter auf diese Weise zu übergeben? Kann irgendein Sicherheitsproblem verursachen? – Freshblood

Verwandte Themen