我已經在成功通過時設置了socket.emit事件。但是,當我綁定sockets.on事件時發生問題。它被多次解僱。socket.on事件每次響應都會重複一次以上
$(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.
});
}
});
});
這裏是我的server.js
socket.on('postcomment', function() {
io.sockets.emit("refresh");
});
我覈實,我server.js socket.on
函數被調用僅一次。 我不確定在ajax中socket.on('refresh', function() {}
有什麼問題。 任何幫助將是偉大的。
P.Socket連接已經建立。那沒問題。
編輯:我糾正了錯誤。如果有人在將來閱讀此內容。 正如jason和Niranjan所提到的,
socket.on{}
事件在成功迴應時自我約束。 簡單: 每次調用click處理程序時,都會將其他事件偵聽器附加到套接字。您在之前的點擊中附加的聽衆會保持活動狀態。
,所以我做了以下修改WRT之前的代碼
$(document).on('click', '#comment_button', function() {
$.ajax({
// upon success
success: function (response) {
if (response) {
socket.emit('postcomment');
}
});
});
socket.on('refresh', function() {
console.log('refresh');
});
編碼愉快。
您是否將函數的多個副本綁定到'socket.on''refresh'事件? – Jason
你什麼時候調用ajax函數? –
不僅console.log('刷新'); –