node.js - nodejs socket.io emiten dentro de la función loop
loops (0)
Me gustaría emitir a través de socket.io dentro de un bucle. Para eso hice un disparador que funciona bien, pero en cada trigonometría llamo socket.emit y solo el primero emita trabajos.
Aquí está el código del servidor:
var server = require(''http'').createServer(handler);
var io = require(''socket.io'')(server);
var fs = require(''fs'');
var ee = require(''events'').EventEmitter;
var trig = new ee();
server.listen(8080);
function handler(req,res){
fs.readFile(''./index.html'', ''utf-8'', function(error, content) {
res.writeHead(200, {"Content-Type": "text/html"});
res.end(content);
console.log(''page affichée'');
});
}
io.on(''connection'',function(socket){
socket.on(''run'',function(v){
run(v);
});
trig.on(''node'',function(i){
io.sockets.emit(''node'',i);
console.log(i);
});
});
function run(v){
for(i=0;i<v;i++){
trig.emit(''node'',i+1);
}
}
y aquí está el código del cliente:
<input id=''file'' type=''text''></input>
<input type=''button'' value=''lancer le process'' onclick="socket.emit(''run'',document.getElementById(''file'').value);"></input>
<script>
var compt_nod = document.getElementById(''compteur_nodes'');
socket = io.connect(''http://127.0.0.1:8080/'');
socket.on(''node'',function(v){
compt_nod.value = v;
console.log(v);
});
</script>
Obtuve el registro del servidor, pero solo la primera respuesta del lado del cliente. Soy bastante nuevo en JS y especialmente en Node, así que discúlpate por esta pregunta tal vez simple.