2013-05-02 8 views
6

Utilizzo la chiusura lato client e lato server Tornado. Creo una presa di corrente:Tornado WebSocket si chiude una volta al minuto

this.socket = goog.net.WebSocket(true) 

e quindi aprirlo:

this.socket.open(theSocketUrl) 

Ogni opera messaggi tra cui pregiati vengono passati correttamente. Tuttavia, una volta al minuto (una volta ogni 60-61 secondi), il socket si chiude e quindi si riapre. Non ci sono errori lato server e l'evento di errore socket Closure non viene chiamato.

Ho aggiunto la registrazione al tornado e qualcosa sembra chiamare on_connection_close() che chiama quindi il metodo del socket su_close(). Il metodo close() stesso non viene chiamato.

Qualche idea sul perché questo potrebbe accadere?

risposta

3

Stai utilizzando nginx o qualche altro proxy inverso davanti al tuo server Tornado? L'ho visto accadere quando scade il timeout del proxy e poi nginx chiude la connessione, causando il comportamento che stai vedendo.

È possibile modificare il proxy_send_timeout e proxy_read_timeout in nginx per evitare questo. Assicurati che quando modifichi proxy.conf, lo includi dal tuo nginx.conf principale.