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