2013-05-02 9 views
6

Ich benutze Closure Client-Seite und Tornado-Server-Seite. Ich erstelle eine Fassung:Tornado WebSocket schließt einmal pro Minute

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

und dann öffnen:

this.socket.open(theSocketUrl) 

Jedes funktioniert einschließlich Nachrichten korrekt weitergeleitet werden. Jedoch einmal pro Minute (einmal alle 60 bis 61 Sekunden) schließt die Steckdose und öffnet sich dann wieder. Es gibt keine serverseitigen Fehler, und das Closure-Socket-Fehlerereignis wird nicht aufgerufen.

Ich habe die Protokollierung zu Tornado hinzugefügt und etwas scheint on_connection_close() aufzurufen, das dann die Methode des Sockets on_close() aufruft. Die Methode close() selbst wird nicht aufgerufen.

Eine Idee, warum das passieren könnte?

Antwort

3

Verwenden Sie nginx oder einen anderen Reverse-Proxy vor Ihrem Tornado-Server? Ich habe gesehen, dass dies passiert, wenn die Proxy-Zeitüberschreitung abläuft, und dann schließt nginx die Verbindung und verursacht das Verhalten, das Sie sehen.

Sie können die proxy_send_timeout und proxy_read_timeout in Nginx ändern, um dies zu verhindern. Stellen Sie nur sicher, dass wenn Sie proxy.conf bearbeiten, Sie es von Ihrem Haupt nginx.conf einschließen.

Verwandte Themen