node.js nodejs socket.io फ़ंक्शन लूप के भीतर फेंकना



loops emit (0)

मैं एक पाश के अंदर socket.io के माध्यम से निकलना चाहूंगा। इसके लिए मैंने एक ट्रिगर बनाया जो अच्छी तरह से काम करता है, लेकिन प्रत्येक त्रिकोण पर मैं socket.emit को कॉल करता हूं और केवल पहला काम करता है।

यहां सर्वर कोड है:

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

और यहां क्लाइंट कोड है:

<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>

मुझे सर्वर से लॉग मिला है, लेकिन क्लाइंट साइड पर केवल पहला जवाब। मैं जेएस में काफी नया हूँ और नोड में विशेष रूप से, इसलिए यह शायद आसान सवाल के लिए माफी माँगता हूँ।





emit