socket.on调用它的callback太多次了

在第一次点击时,我的客户输出这个:

Object {hello: "world"} 

然后在第二次点击:

 Object {hello: "world"} Object {hello: "world"} 

点击输出的行数增加1。

客户

 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); }); }); 

每次触发单击事件处理程序时,都要绑定一个新的事件处理程序。 在callback之外绑定一次:

 var socket = io.connect('http://localhost'); socket.on('news', function(data) { console.log(data); }); $(document).on('click', '#test', function() { socket.emit('news', { my: 'data' }); });