SignalR - senden parameter OnConnected?
Habe ich Folgendes JS arbeiten:
var chat = $.connection.appHub;
Meine app hat einen einzigen hub AppHub
verarbeitet zwei Arten von Benachrichtigungen - Chat
und Other
. Ich bin mit einem single-hub-da brauche ich Zugang zu allen Anschlüssen zu allen Zeiten.
Ich muss in der Lage sein zu sagen OnConnected
welche Art es ist, über etwas wie den folgenden:
[Authorize]
public class AppHub : Hub {
private readonly static ConnectionMapping<string> _chatConnections =
new ConnectionMapping<string>();
private readonly static ConnectionMapping<string> _navbarConnections =
new ConnectionMapping<string>();
public override Task OnConnected(bool isChat) { //here
string user = Context.User.Identity.Name;
if (isChat){
_chatConnections.Add(user, Context.ConnectionId);
_navbarConnections.Add(user, Context.ConnectionId);
} else{
_navbarConnections.Add(user, Context.ConnectionId);
}
}
}
Nutzung würde im Idealfall so etwas wie dieses:
var chat = $.connection.appHub(true);
Wie kann ich den übergeben parameter an den hub von javascript?
Update:
SendMessage:
//will have another for OtherMessage
public void SendChatMessage(string who, ChatMessageViewModel message) {
message.HtmlContent = _compiler.Transform(message.HtmlContent);
foreach (var connectionId in _chatConnections.GetConnections(who)) {
Clients.Client(connectionId).addChatMessage(JsonConvert.SerializeObject(message).SanitizeData());
}
}
InformationsquelleAutor RobVious | 2013-12-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde eher eine Methode hinzufügen, die hub-Aufruf vom client zum abonnieren geben. E. g.
Rufen Sie diese Methode auf, nachdem der hub angeschlossen ist. Es ist flexibler in Bezug auf, es ist dann möglich, um den Benachrichtigungstyp zu ändern, ohne neu zu verbinden. (Abmelden und Abonnieren)
Alternative
Wenn Sie nicht möchten, dass das zusätzliche hin-und Rückfahrt/Flexibilität. Sie können senden QueryString-Parameter, die bei der Verbindung zum hub. Stackoverflow-Antwort: Signalr dauerhafte Verbindung mit query-Parameter.
Und in der OnConnected:
Sorry, ich habe das von meinem eigenen code. Es sollte funktionieren, wenn Sie ändern Abonnieren Sie die Methode Körper mit der in Ihrer Methode OnConnected
Ich bin immer noch ein wenig verwirrt - würde ich nicht überschreiben OnConnected dann überhaupt? Dies erfordert auch eine andere round-trip-request zu initiieren, richtig? Und - ich bin nicht besorgt über verbindungen - ChatHub ist für eine eigene Seite, und OtherHub ist für navbar-Benachrichtigungen. Der Benutzer tatsächlich angeschlossen werden, um beide Naben beim Besuch von Chat - ich wollte nur nicht gehören, vor. Korrigiert jetzt. Gedanken?
Ja, es erfordert einen zusätzlichen roundtrip. Ich fand eine alternative Lösung ist wohl eher, was Sie gesucht haben.
Danke, dass Sie so viel Hallvar
InformationsquelleAutor Hallvar Helleseth