Ich entwickle eine Benutzer-Tracking-Lösung mit SignalR, als ein lustiges Projekt SignalR lernen, für ASP.NET MVC-Anwendungen.Holen Sie sich die vollständige URL in SignalR Hub
Derzeit kann ich protokollierte Benutzer verfolgen und wie lange sie auf einer bestimmten Seite sind. Wenn sie auf eine andere Seite wechseln, verfolge ich das auch und der Timer, den SignalR aktualisiert, wird zurückgesetzt ... Viele andere Funktionen sind implementiert oder teilweise implementiert.
Das Problem, das ich gegenüberstelle, ist, wie man die volle URL Controller/Aktion/Parameter in SignalR Hub?
Wenn ich HttpContext.Current.Request.Url
verwende, ist die URL immer /signaler/connect.
HINWEIS:
var hub = $.connection.myHub;
$.connection.hub.start();
im _Layout.cshtml.
UPDATE:
Ich habe versucht,
var location = '@HttpContext.Current.Request.Url';
var hub = $.connection.myHub;
$.connection.hub.start().done(function() {
hub.setLocation(location);
});
zu verwenden, und die Lage ist korrekt übergeben, aber ich muss es auf der Connect() Aufgabe nicht später. Ist es möglich, dies zu tun?
UPDATE 2:
Dieser Ansatz nicht
var hub = $.connection.myHub;
$.connection.hub.start(function(){hub.setLocation(location)});
als Connect()
wird, bevor genannt funktioniert.
In meinem Hub habe ich mehrere Methoden, aber ich würde gerne einen Wert (in meinem Fall ein Ort) an die Connect()
übergeben, ist das möglich?
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
}
}
Update 3
Verwenden Abfragezeichenfolge Daten zu übergeben, bevor die Connect()
auftritt.
var location = '@HttpContext.Current.Request.Url';
var hub = $.connection.myHub;
$.connection.hub.qs = "location= + location;
$.connection.hub.start();
hallo ... arbeiten Sie immer noch auf dieser Tracking-Lösung ... tun Sie seinen Code etwas dagegen zu teilen? –
@jalchr Ich habe nichts dagegen, aber die NDA würde; (Ich werde freundlich helfen/zeigen in die richtige Richtung, wenn Sie Fragen haben. –
Tipp: für die Benutzerverfolgung müssen Sie sicherstellen, SignalR verbindet unmittelbar bevor die Seite alle voll geladen hat Ressourcen: 'waitForPageLoad' also stellen Sie sicher, dass Sie das setzen: http://StackOverflow.com/Questions/32856436/SignalR-SLow-to-Connect-from-JavaScript-client/32856492#32856492 –