socket.on 调用它的回调太多次
Posted
技术标签:
【中文标题】socket.on 调用它的回调太多次【英文标题】:socket.on calls its callback too many times 【发布时间】:2013-08-13 00:36:30 【问题描述】:在第一次点击时,我的客户会输出这个:
Object hello: "world"
然后在第二次点击时:
Object hello: "world"
Object hello: "world"
随着后续的点击,点击输出行的次数增加一。
客户
var socket = io.connect('http://localhost');
$(document).on('click' , '#test', function()
socket.emit('news', my: 'data' );
socket.on('news', function (data)
console.log(data);
);
);
服务器
var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs')
io.sockets.on('connection', function (socket)
socket.on('news', function (data)
socket.emit('news', hello: 'world' );
console.log(data);
);
);
【问题讨论】:
【参考方案1】:每次触发 click 事件处理程序时,您都会绑定一个新的事件处理程序。在回调之外绑定一次:
var socket = io.connect('http://localhost');
socket.on('news', function(data)
console.log(data);
);
$(document).on('click', '#test', function()
socket.emit('news',
my: 'data'
);
);
【讨论】:
哦,谢谢,如果我需要在我的函数中使用套接字,但我有 var 吗?示例 $(document).on('click' , '#test', function() var id = $(this).id; //// 我在 socket.emit('news', my: 'data', myId : id ); socket.on('news', function (data) console.log(data); ); );从服务器创建回调?以上是关于socket.on 调用它的回调太多次的主要内容,如果未能解决你的问题,请参考以下文章