Es tut mir leid, dass Sie möglicherweise einen doppelten Thread erstellen, aber ich kann meine Webanwendung einfach nicht dazu bringen, das zu tun, was ich brauche, indem ich die anderen Beispiele befolge.Push-Daten zum Client mit SignalR
Mein Ziel ist es eine der folgenden Funktionen ausführen:
OPTION 1 - IDEAL LÖSUNG
Daten Fetch aus einer Datenbank und aktualisieren die Benutzeroberfläche auf einer Webseite nur, wenn Änderungen an den Daten vorgenommen werden angezeigt auf der Webseite. Wenn ein Benutzer beispielsweise ein Serviceticket anzeigt, möchte ich die Benutzeroberfläche auf dieser Seite nur aktualisieren, wenn dieses Ticket geändert wird.
OPTION 2 - akzeptable Lösung
Daten Fetch aus einer Datenbank alle x Sekunden und diese Daten verwenden, die Benutzeroberfläche auf einer Web-Seite zu aktualisieren.
Meine aktuelle Implementierung von Option 2 ist unten. Es geht um eine asynchrone HTTP-Anforderung alle 60 Sekunden sendet die Daten zu holen:
// start checking for new messages every 60 seconds
setInterval(function() {
$.ajax({
async: true,
type: "POST",
contentType: "application/json; charset=utf-8;",
url: "/AJAX_Handlers/CheckForNewMessages.ashx",
dataType: "json",
success: function (Result) {
var new_message_received = Result[0]["NewMessageReceived"];
if (new_message_received) {
$("#DIVMessageReminder").html("<strong>You have " + num_new_messages + " new message(s).</strong>");
$("#DIVMessageReminder").show();
}
else {
$("#DIVMessageReminder").hide();
}
}
});
}, 60000);
Anstatt eine HTTP-Anforderung alle 60 Sekunden zu senden, würde Ich mag SignalR verwenden alle 60 Sekunden, dass die Daten an den Client zu schieben.
Als einfaches Beispiel, ich habe folgenden Hub mit einer Methode erstellt die aktuelle Uhrzeit auf dem Server zu erhalten:
Imports Microsoft.AspNet.SignalR
Public Class ServerTimeHub
Inherits Hub
Public Sub GetServerTime()
Dim current_time As String = Now.ToString()
Clients.All.updateTime(current_time)
End Sub
End Class
und ein basisches Textbox:
<input id="TXTLongPollingTest" type="text" class="form-control" />
Und meinen client- Seitencode:
Zuerst habe ich versucht, es zu bekommen, um die Serverzeit nur einmal zu holen. Mein Code wird erfolgreich eine Verbindung mit dem Hub herstellen, aber dann wird der Fehler "Uncaught TypeError: hub.getServerTime ist keine Funktion" ausgegeben. Das ist das erste Problem, das ich nicht überwinden konnte.
Das zweite Problem ist: Wie kann ich den Hub erhalten, um die aktuelle Uhrzeit in regelmäßigen Abständen, z. B. alle 1 Sekunde, an den Client zu senden?
Auch wenn dies den anderen Beispielen sehr ähnlich zu sein scheint, hat dies für mich funktioniert. Vielen Dank für deine Hilfe! Ich möchte immer noch wissen, ob jemand eine Lösung hat, um neue Daten NUR zu holen, wenn die fraglichen Daten geändert worden sind. – freegem