10
我有一个非常基本的例子。这个问题以前曾经多次在堆栈溢出中提出过,但是我无法得到正确的答案,所以我将使用这个基本示例。socket.io发出多次
服务器:
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
server.listen(3000);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.on('connection', function (socket) {
socket.on('chat', function (data) {
var op = false;
if(data.id == '1234'){
op = 'yes';
}else{
op = 'no';
}
socket.emit('result', { hello: op });
});
});
客户:
<html>
<body>
<button onclick="check()">Test Me :-)</button>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost:3000');
var check = function(){
var data = { id : '234'};
socket.emit('chat', data);
socket.on('result', function(data){
console.log('The data is '+data)
})
}
</script>
</body>
</html>
当我点击测试按钮我在第一次 socket.emit( '结果',{你好: '世界'}) ;它被发射一次。并在控制台中我得到这个印刷:
console.log('The data is '+data)
但是,当我再次点击我得到这个印刷三次:
console.log('The data is '+data)
console.log('The data is '+data)
console.log('The data is '+data)
当我点击我第三次获得印刷六次:
console.log('The data is '+data)
console.log('The data is '+data)
console.log('The data is '+data)
console.log('The data is '+data)
console.log('The data is '+data)
console.log('The data is '+data)
像这样它正在成倍增长。
任何人都可以请给我关于如何解决这个问题的见解。 我们非常感谢您的帮助。谢谢!
非常感谢dude.It的伎俩:-) – sdg