Problem mit langen Polling mit JQuery auf Tomcat Server
-
25-09-2019 - |
Frage
Ich habe eine CometServlet nach diesem Beispiel http: //tomcat.apache .org / tomcat-7.0-doc / aio.html . Dann habe ich versucht, Daten von ihm zu bekommen, mit JQuery. Der Code ist folgende:
$(function() {
$.longPoll = function(url, success, error) {
$.ajax({
url : url,
success: function(data, status) {
$.longPoll(url, success, error);
if (success) {
success(data, status);
}
},
error: function(data, status) {
$.longPoll(url, success, error);
if (error) {
error(data, status);
}
}
});
};
$.longPoll("./comet", "", function(data, status) {
alert("success:" + data);
}, function(data, status) {
alert("error:" + data);
});
});
Das Problem ist, dass die Erfolgsfunktion nicht Auslöser (obwohl ich in der Firebug-Konsole sehen kann, dass die Daten kommen). Ich denke, es geschieht, weil der Server nicht in der Nähe einer Antwort Schriftsteller tut, aber es ist ein Ziel des Lang Polling:)
Hat jemand irgendwelche Ideen, wie es gelöst werden kann?
Lösung 2
Die Problemlösung ist Timer hinzuzufügen, um den langfris Umfrage Strom für ein neue Daten zu prüfen. Große Erklärung ist hier: http: / /www.bennadel.com/blog/1976-Long-Polling-Experiment-With-jQuery-And-ColdFusion.htm
Danke an alle.
Andere Tipps
Sie müssen die xhr onreadystatechange
um readyState === 3
mit jQuery .ajax()
zu überprüfen, zu überschreiben. Beispiel:
var xhr = $.ajax({});
xhr._onreadystatechange = xhr.onreadystatechange; // save original handler
xhr.onreadystatechange = function() {
xhr._onreadystatechange(); // execute original handler
if (xhr.readyState === 3) alert('Interactive');
};