2013-05-02 10 views
6

Używam strony klienckiej po stronie klienta i Tornada. Tworzę Gniazdo:Tornado WebSocket zamyka się raz na minutę

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

a następnie otworzyć go:

this.socket.open(theSocketUrl) 

Każdy działa dobrze w tym komunikaty są przekazywane prawidłowo. Jednak raz na minutę (raz na 60 do 61 sekund) gniazdo zamyka się, a następnie ponownie otwiera. Nie ma błędów po stronie serwera, a zdarzenie błędu gniazda zamknięcia nie zostanie wywołane.

Dodałem logowanie do tornada i coś wydaje się wywoływać on_connection_close(), które następnie wywołuje metodę socket on_close(). Sama metoda close() nie jest wywoływana.

Każdy pomysł, dlaczego tak się dzieje?

Odpowiedz

3

Czy korzystasz z nginxa lub jakiegoś innego serwera proxy odwrotnego przed swoim serwerem tornado? Widziałem, jak to się stało, gdy upłynął limit czasu serwera proxy, a następnie nginx zamyka połączenie, powodując zachowanie, które widzisz.

Możesz zmienić proxy_send_timeout i proxy_read_timeout w nginx, aby temu zapobiec. Upewnij się tylko, że edytując proxy.conf, uwzględnisz to w głównej nginx.conf.

Powiązane problemy