我已经在成功通过时设置了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('刷新'); –