def write_message(
        self, message: Union[str, bytes], binary: bool = False
    ) -> "Future[None]":
        """Sends the given message to the client of this Web Socket."""
        if binary:
            opcode = 0x2
        else:
            opcode = 0x1
        message = tornado.escape.utf8(message)
        assert isinstance(message, bytes)
        self._message_bytes_out += len(message)
        flags = 0
        if self._compressor:
            message = self._compressor.compress(message)
            flags |= self.RSV1
        # For historical reasons, write methods in Tornado operate in a semi-synchronous
        # mode in which awaiting the Future they return is optional (But errors can
        # still be raised). This requires us to go through an awkward dance here
        # to transform the errors that may be returned while presenting the same
        # semi-synchronous interface.
        try:
            fut = self._write_frame(True, opcode, message, flags=flags)
        except StreamClosedError:
            raise WebSocketClosedError()

        async def wrapper() -> None:
            try:
                await fut
            except StreamClosedError:
                raise WebSocketClosedError()

        return asyncio.ensure_future(wrapper())
def write_message ( self , message : Union [ str , bytes ] , binary : bool = False ) -> "Future[None]" : if binary : opcode = 0x2 else : opcode = 0x1 message = tornado . escape . utf8 ( message ) assert isinstance ( message , bytes ) self . _message_bytes_out += len ( message ) flags = 0 if self . _compressor : message = self . _compressor . compress ( message ) flags |= self . RSV1 try : fut = self . _write_frame ( True , opcode , message , flags = flags ) except StreamClosedError : raise WebSocketClosedError ( ) async def wrapper ( ) -> None : try : await fut except StreamClosedError : raise WebSocketClosedError ( ) return asyncio . ensure_future ( wrapper ( ) )
Sends the given message to the client of this Web Socket.