You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jumpserver/run_log_watch.py

68 lines
1.7 KiB

9 years ago
# coding: utf-8
import time
import json
import os.path
import tornado.ioloop
import tornado.options
import tornado.web
import tornado.websocket
import tornado.httpserver
from tornado.options import define, options
define("port", default=8080, help="run on the given port", type=int)
class Application(tornado.web.Application):
def __init__(self):
handlers = [
(r'/', MainHandler),
(r'/send', SendHandler),
]
setting = {
'cookie_secret': 'DFksdfsasdfkasdfFKwlwfsdfsa1204mx',
'template_path': os.path.join(os.path.dirname(__file__), 'templates'),
'static_path': os.path.join(os.path.dirname(__file__), 'static'),
}
tornado.web.Application.__init__(self, handlers, **setting)
class SendHandler(tornado.websocket.WebSocketHandler):
clients = set()
def open(self):
SendHandler.clients.add(self)
self.write_message(json.dumps({'input': 'connected...'}))
self.stream.set_nodelay(True)
def on_message(self, message):
message = json.loads(message)
self.write_message(json.dumps({'input': 'response...'}))
while True:
self.write_message(json.dumps(message))
time.sleep(1)
# # 服务器主动关闭
# self.close()
# SendHandler.clients.remove(self)
def on_close(self):
# 客户端主动关闭
SendHandler.clients.remove(self)
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render('log_watch.html')
if __name__ == '__main__':
tornado.options.parse_command_line()
app = Application()
server = tornado.httpserver.HTTPServer(app)
server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()