from tornado.ioloop import IOLoop
from tornado.options import define, options, parse_command_line
+from tornado.util import bytes_type
from tornado.websocket import WebSocketHandler
from tornado.web import Application
class EchoHandler(WebSocketHandler):
def on_message(self, message):
- self.write_message(message)
+ self.write_message(message, binary=isinstance(message, bytes_type))
if __name__ == '__main__':
parse_command_line()
self.ws_connection = WebSocketProtocol76(self)
self.ws_connection.accept_connection()
- def write_message(self, message):
+ def write_message(self, message, binary=False):
"""Sends the given message to the client of this Web Socket."""
- self.ws_connection.write_message(message)
+ if isinstance(message, dict):
+ message = tornado.escape.json_encode(message)
+ self.ws_connection.write_message(message, binary=binary)
def open(self, *args, **kwargs):
"""Invoked when a new WebSocket is opened."""
self.client_terminated = True
self.close()
- def write_message(self, message):
+ def write_message(self, message, binary=False):
"""Sends the given message to the client of this Web Socket."""
- if isinstance(message, dict):
- message = tornado.escape.json_encode(message)
+ if binary:
+ raise ValueError(
+ "Binary messages not supported by this version of websockets")
if isinstance(message, unicode):
message = message.encode("utf-8")
assert isinstance(message, bytes_type)
frame += data
self.stream.write(frame)
- def write_message(self, message):
+ def write_message(self, message, binary=False):
"""Sends the given message to the client of this Web Socket."""
- if isinstance(message, dict):
- message = tornado.escape.json_encode(message)
- if isinstance(message, unicode):
- opcode = 0x1
- message = message.encode("utf-8")
- else:
+ if binary:
opcode = 0x2
+ else:
+ opcode = 0x1
+ message = tornado.escape.utf8(message)
assert isinstance(message, bytes_type)
self._write_frame(True, opcode, message)