Jak mogę czekać na połączenie socket.io, aby zwrócić dane za pomocą casperJS?

Skrobię stronę, która używa socket.io do wypełnienia niektórych opcji tagów. Jak mogę poczekać, aż gniazdo otrzyma dane przed oceną strony? ja używamcasperJS

kod gniazda (ładowany przez witrynę docelową):

socket.on('list', function (data) {


$.each(data.match_names, function (id, name) {
    if (some condition) {
        /*nothing*/
    } else {
        if (typeof( varname ) == 'function') {
            $('#myselector').append('<option value="' + id + '">' + name + " " + get_tournament_name(id.substr(0, 4)) + '</option>');
        } else {
            $('#myselector').append('<option value="' + id + '">' + name + '</option>');
        }
        match_count++;
    }
});

Sprawdzam, czy skrypt socket.io został załadowany:

casper.waitForResource("socket.io.js", function() {
    this.echo('socket.io has been loaded.'); //is printed

//how can I check that data has arrived from 'socket.on('list', function (data)' ?
});

Ale znaczniki opcji nie znajdują się na stronie, prawdopodobnie dlatego, że oceniam stronę zbyt wcześnie

casper.then(function() {
    baseTargetUrl = this.evaluate(function() {
        return __utils__.getElementByXPath('//*[@id="wrapper"]/div[1]/a[2]')["href"];
    });
    console.log('logging: '+baseTargetUrl); // works

    casper.thenOpenAndEvaluate(baseTargetUrl ,function() { //baseTargetUrl is no longer undefined, it's a closure now

        $(function(){ // DOM is ready

            var myOptions = [] ;

            $('select#myselector option').each(function(){
                myOptions.push( $(this).text() + ' : '+$(this).val() ); //additional options have not yet been added

            });

        });
    });
});

questionAnswers(2)

yourAnswerToTheQuestion