Skip to content

Commit f4a83e8

Browse files
committed
websocket: Fix lint, remove hard-coded 30s default timeout
1 parent ec57518 commit f4a83e8

File tree

2 files changed

+15
-14
lines changed

2 files changed

+15
-14
lines changed

tornado/test/websocket_test.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -844,31 +844,33 @@ def test_client_ping(self):
844844

845845
class ServerPingTimeoutTest(WebSocketBaseTestCase):
846846
def get_app(self):
847-
handlers = []
847+
self.handlers: list[WebSocketHandler] = []
848+
test = self
848849

849850
class PingHandler(TestWebSocketHandler):
850851
def initialize(self, close_future=None, compression_options=None):
852+
self.handlers = test.handlers
851853
# capture the handler instance so we can interrogate it later
852-
handlers.append(self)
854+
self.handlers.append(self)
853855
return super().initialize(
854-
close_future=close_future,
855-
compression_options=compression_options,
856+
close_future=close_future, compression_options=compression_options
856857
)
857858

858859
app = Application([("/", PingHandler)])
859-
app._handlers = handlers
860860
return app
861861

862862
@staticmethod
863863
def suppress_pong(ws):
864864
"""Suppress the client's "pong" response."""
865+
865866
def wrapper(fcn):
866867
def _inner(oppcode: int, data: bytes):
867868
if oppcode == 0xA: # NOTE: 0x9=ping, 0xA=pong
868869
# prevent pong responses
869870
return
870871
# leave all other responses unchanged
871872
return fcn(oppcode, data)
873+
872874
return _inner
873875

874876
ws.protocol._handle_message = wrapper(ws.protocol._handle_message)
@@ -879,7 +881,7 @@ def test_client_ping_timeout(self):
879881
ws = yield self.ws_connect("/", ping_interval=0.2, ping_timeout=0.05)
880882

881883
# websocket handler (server side)
882-
handler = self._app._handlers[0]
884+
handler = self.handlers[0]
883885

884886
for _ in range(5):
885887
# wait for the ping period
@@ -900,7 +902,7 @@ def test_client_ping_timeout(self):
900902

901903
# connection should be closed from the server side
902904
assert handler.close_code == 1000
903-
assert handler.close_reason == 'ping timed out'
905+
assert handler.close_reason == "ping timed out"
904906

905907
# client should have received a close operation
906908
assert ws.protocol.close_code == 1000

tornado/websocket.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
from tornado.concurrent import Future, future_set_result_unless_cancelled
2929
from tornado.escape import utf8, native_str, to_unicode
3030
from tornado import gen, httpclient, httputil
31-
from tornado.ioloop import IOLoop, PeriodicCallback
31+
from tornado.ioloop import IOLoop
3232
from tornado.iostream import StreamClosedError, IOStream
3333
from tornado.log import gen_log, app_log
3434
from tornado.netutil import Resolver
@@ -860,7 +860,6 @@ def __init__(
860860
# the effect of compression, frame overhead, and control frames.
861861
self._wire_bytes_in = 0
862862
self._wire_bytes_out = 0
863-
self.ping_callback = None # type: Optional[PeriodicCallback]
864863
self._received_pong = False # type: bool
865864
self.close_code = None # type: Optional[int]
866865
self.close_reason = None # type: Optional[str]
@@ -1327,13 +1326,13 @@ def ping_timeout(self) -> float:
13271326
# Note: using de_dupe_gen_log to prevent this message from
13281327
# being duplicated for each connection
13291328
logging.WARNING,
1330-
f'The websocket_ping_timeout ({timeout}) cannot be longer'
1331-
f' than the websocket_ping_interval ({self.ping_interval}).'
1332-
f'\nSetting websocket_ping_timeout={self.ping_interval}'
1329+
f"The websocket_ping_timeout ({timeout}) cannot be longer"
1330+
f" than the websocket_ping_interval ({self.ping_interval})."
1331+
f"\nSetting websocket_ping_timeout={self.ping_interval}",
13331332
)
13341333
return self.ping_interval
13351334
return timeout
1336-
return min(self.ping_interval, 30)
1335+
return self.ping_interval
13371336

13381337
def start_pinging(self) -> None:
13391338
"""Start sending periodic pings to keep the connection alive"""
@@ -1366,7 +1365,7 @@ async def periodic_ping(self) -> None:
13661365

13671366
# make sure we received a pong within the timeout
13681367
if timeout > 0 and not self._received_pong:
1369-
self.close(reason='ping timed out')
1368+
self.close(reason="ping timed out")
13701369
return
13711370

13721371
# wait until the next scheduled ping

0 commit comments

Comments
 (0)