Ich habe socket.emit Ereignis nach erfolgreichen cooment festgelegt. Aber das Problem tritt auf, wenn ich sockets.on-Ereignis binde. Es wird mehrfach gefeuert.socket.on Ereignis wiederholt sich mehr als einmal mit jeder Antwort
$(document).on('click', '#comment_button', function() {
$.ajax({
// upon success
success: function (response) {
if (response) {
socket.emit('postcomment');
socket.on('refresh', function() {
console.log('refresh');
//This console.log('refresh') is coming multiple times. I mean its occurance increases with every successful ajax response.
});
}
});
});
Hier ist meine server.js
socket.on('postcomment', function() {
io.sockets.emit("refresh");
});
ich vergewissert haben, dass in meiner server.js socket.on
Funktion nur einmal aufgerufen wird. Ich bin mir nicht sicher, was das Problem mit socket.on('refresh', function() {}
in Ajax ist. Jede Hilfe wird groß sein.
Die Socketverbindung ist bereits hergestellt. Kein Problem darin.
EDIT: Ich habe den Fehler behoben. Wenn jemand das in Zukunft liest. Wie Jason und Niranjan erwähnt,
socket.on{}
Ereignis wurde bei erfolgreicher Antwort verbindlich. Um einfach zu sein: Jedes Mal, wenn der Click-Handler aufgerufen wird, werden zusätzliche Ereignis-Listener an den Socket angehängt. Die Listener, die Sie bei den vorherigen Klicks angefügt haben, bleiben aktiv.
so machte ich die folgenden Änderungen WRT zur vorherigen Code
$(document).on('click', '#comment_button', function() {
$.ajax({
// upon success
success: function (response) {
if (response) {
socket.emit('postcomment');
}
});
});
socket.on('refresh', function() {
console.log('refresh');
});
Glücklich Codierung.
verbindlich sind mehrere Kopien der Funktion der '' socket.on' refresh' Ereignis? – Jason
Wann rufen Sie die Ajax-Funktion? –
Nein nur console.log ('refresh'); –