Wie übergeben Sie einen parameter-hub in SignalR?
Mein code in SignalR-hub:
public class AlertHub : Hub
{
public static readonly System.Timers.Timer _Timer = new System.Timers.Timer();
static AlertHub()
{
_Timer.Interval = 60000;
_Timer.Elapsed += TimerElapsed;
_Timer.Start();
}
static void TimerElapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//Random rnd = new Random();
//int i = rnd.Next(0,2);
Alert alert = new Alert();
i = alert.CheckForNewAlerts(EmpId);
var hub = GlobalHost.ConnectionManager.GetHubContext("AlertHub");
hub.Clients.All.Alert(i);
}
}
Irgendwie muss ich weiterleiten EmpId parameter. Wie dies zu erreichen?
Einige weitere Angaben des Kunden:
Auf meiner aspx-Seite habe ich folgenden code:
<script type="text/javascript">
$(function () {
var alert = $.connection.alertHub;
alert.client.Alert = function (msg) {
if (msg == 1) {
$("#HyperLink1").show();
$("#HyperLink2").hide();
}
else {
$("#HyperLink1").hide();
$("#HyperLink2").show();
}
//$("#logUl").append("<li>" + msg + "</li>");
};
$.connection.hub.start();
});
</script>
Auf ASPX-Seite, meine EmpID wird im session-Objekt und muss ich irgendwie es in den SignalR-hub.
- Wo kommt
EmpId
kommen? - Das ist, was ich übergeben zu müssen, aber ich bin cluless, wie und wo das zu tun.
- Ich bin mir nicht sicher, ob ich Folgen. Was bedeutet, dass die Eigenschaft bedeuten, und wo würden Sie Zugriff haben, auch wenn Sie wusste, wie gehen Sie? Kann es sein, ausgesetzt von woanders? Du bist nicht in der Lage zu gehen, etwas in den Konstruktor, wie Sie nicht sind verantwortlich für die Erstellung der Hub. Alles, was Sie wollen, die Nabe zu haben, die es entweder braucht, um zu wissen, über bereits, oder ziehen Sie woanders.
- Ich aktualisiert meine Antwort für Sie
Du musst angemeldet sein, um einen Kommentar abzugeben.
Behalten Sie den überblick über die angeschlossenen Benutzer (und allen zugehörigen Metadaten) von Verbindung (überprüfen Sie hier und hier für Beispiele) und auf der timer-tick-überprüfen Sie Ihre gespeicherten lokalen Daten für was auch immer Sie brauchen.
Selbst, signalR nicht übergeben Sie nichts. Der Kunde hat passieren Dinge zusammen.
Wenn Ihr Kunde hat die Mitarbeiter-ID, die es haben schicken Sie es an die signalr-hub anschließen. Sie können fügen Sie einen Ereignishandler wissen, Wann der client verbindet sich in Ihrer aspx-Seite javascript und senden Sie es dann an den hub. Der hub kann dann verfolgen
ConnectionId, EmployeeID
in einem Wörterbuch und Sie können Sie verwenden, um den Zugriff wieder auf den bestimmten client oder tun, was Sie wollen.Überprüfen Sie die links, die ich geschrieben, Sie zeigen, wie Sie dies tun.
start()
Methode wird aufgerufen, einen Rückruf. An dieser Stelle senden Sie einfach, was Sie wollen, um die Nabe.$.connection.hub.start()
auf eine bestimmte Verbindungs-id?Neben die akzeptierte Antwort, die ich verwendet haben, diese zu passieren mehrere query-strings vom client an den hub:
In Client:
---Rest-der-code - - - - - - - -
In Hub Klasse:
Ich bin mit den “Microsoft.AspNet.SignalR.Client" Bibliothek "- version 2.3.0.0" in einer windows form-Anwendung mit c#.