#!/usr/bin/env python3 import logging from tornado import gen import tornado.ioloop import tornado.web import tornado.options import tornado.websocket app_log = logging.getLogger('tornado.application') class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello World!\n") class EchoWebSocketHandler(tornado.websocket.WebSocketHandler): def check_origin(self, origin): return True def open(self, qid=None): app_log.debug("Open new websocket") if qid: app_log.info("New qid: " + str(qid)) @gen.coroutine def on_message(self, message): app_log.debug("type: " + str(type(message))) app_log.debug("New websocket msg:" + str(message)) self.write_message("Echo: " + message) def on_close(self): app_log.debug("Close websocket") def init_log(): import tornado.log tornado.log.enable_pretty_logging() for name in ['tornado.access', 'tornado', 'tornado.application', 'tornado.general']: logger = logging.getLogger(name) logger.setLevel(logging.DEBUG) def make_app(): handlers = [ (r"/", MainHandler), (r"/websocket", EchoWebSocketHandler), (r"/websocket/(?P\d+)", EchoWebSocketHandler), ] return tornado.web.Application(handlers , debug=True) application = make_app() def main(): PORT = 11000 init_log() application.listen(PORT) app_log.info("Start the server to listen: " + str(PORT)) tornado.ioloop.IOLoop.current().start() if __name__ == "__main__": main()