2016-02-19 4 views
0

Je suis la construction d'une petite application qui pile un journal et l'affiche sur le client. Cependant, lorsque j'ajoute des lignes à mon journal, je perds des données.Pourquoi les données sont-elles perdues dans socket.io?

Voici le gestionnaire Python concerné:

@socketio.on('Request logs') 
def handle_request_logs(): 
    logfile = '/path/to/some_log.log' 

    # gets last 25 lines from logfile 
    last_n_lines = tailer.tail(open(logfile), 25) 

    # sends the initial 25 lines 
    emit('Initial send', { 'lines' : last_n_lines }) 

    # emits lines that were appended to logfile 
    @copy_current_request_context 
    def tail(logfile): 
     for line in tailer.follow(open(logfile)): 
      print("About to emit {0}".format(line)) 
      emit('log', { 'line' : line }) 

    # emit added lines as they come 
    t = threading.Thread(target=tail, args=(logfile,)) 
    t.start() 

et voici la JS qui reçoit 'log':

socket.on('log', function(data) { 
     alert("Got some data: ", data['line']); 
    }); 

Chaque fois que je joins quelque chose dans le journal (par exemple echo 'hello, world!' >> /path/to/some_log.log), je vois une alerte sur le client avec le message "Got some data: ". Cependant, mon serveur imprime "About to emit hello, world!".

Pourquoi cela se produit-il?

Répondre

1

Vous avez une virgule dans votre alerte (javascript). Cela devrait probablement être un + pour la concaténation.

+0

Ugh ... Je me déteste. – erip