raise Exception("boom")
+class NoDelayHandler(TestWebSocketHandler):
+ def open(self):
+ self.set_nodelay(True)
+ self.write_message("hello")
+
+
class WebSocketBaseTestCase(AsyncHTTPTestCase):
@gen.coroutine
def ws_connect(self, path, **kwargs):
),
("/error_in_open", ErrorInOpenHandler),
("/error_in_async_open", ErrorInAsyncOpenHandler),
+ ("/nodelay", NoDelayHandler),
],
template_loader=DictLoader({"message.html": "<b>{{ message }}</b>"}),
)
res = yield ws.read_message()
self.assertIsNone(res)
+ @gen_test
+ def test_nodelay(self):
+ ws = yield self.ws_connect("/nodelay")
+ res = yield ws.read_message()
+ self.assertEqual(res, "hello")
+
class NativeCoroutineOnMessageHandler(TestWebSocketHandler):
def initialize(self, **kwargs):
.. versionadded:: 3.1
"""
- assert self.stream is not None
- self.stream.set_nodelay(value)
+ assert self.ws_connection is not None
+ self.ws_connection.set_nodelay(value)
def on_connection_close(self) -> None:
if self.ws_connection:
async def _receive_frame_loop(self) -> None:
raise NotImplementedError()
+ @abc.abstractmethod
+ def set_nodelay(self, x: bool) -> None:
+ raise NotImplementedError()
+
class _PerMessageDeflateCompressor(object):
def __init__(
self.write_ping(b"")
self.last_ping = now
+ def set_nodelay(self, x: bool) -> None:
+ self.stream.set_nodelay(x)
+
class WebSocketClientConnection(simple_httpclient._HTTPConnection):
"""WebSocket client connection.