mirror of https://github.com/jumpserver/jumpserver
some
parent
73f94fecb5
commit
ebe8ce7109
|
@ -0,0 +1,67 @@
|
||||||
|
# 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()
|
|
@ -0,0 +1,104 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link href="http://cdn.bootcss.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<link href="http://cdn.bootcss.com/bootstrap/3.2.0/css/bootstrap-theme.min.css" rel="stylesheet">
|
||||||
|
<script src="http://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script>
|
||||||
|
<script src="http://cdn.bootcss.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||||
|
<script>
|
||||||
|
var wsUri = "ws://j:8080/send";
|
||||||
|
var ws;
|
||||||
|
function connect(){
|
||||||
|
ws = new WebSocket(wsUri);
|
||||||
|
ws.onopen = function(evt){ console.log(evt.data) };
|
||||||
|
ws.onclose = function(evt){ console.log(evt.data) };
|
||||||
|
ws.onmessage = function(evt){ console.log(evt.data) };
|
||||||
|
ws.onerror = function(evt){ console.log(evt.data) };
|
||||||
|
|
||||||
|
return ws;
|
||||||
|
}
|
||||||
|
|
||||||
|
function send() {
|
||||||
|
var data = {
|
||||||
|
input:$("#input_data").val()
|
||||||
|
};
|
||||||
|
|
||||||
|
console.log('hello');
|
||||||
|
ws.send(JSON.stringify(data));
|
||||||
|
|
||||||
|
$("#message").empty();
|
||||||
|
ws.onopen = function() {
|
||||||
|
ws.send(JSON.stringify(data));
|
||||||
|
};
|
||||||
|
|
||||||
|
$("#message").append('<div class="panel-body"><p>');
|
||||||
|
ws.onmessage = function(event) {
|
||||||
|
$("#message").append(JSON.parse(event.data).input + "<br>");
|
||||||
|
};
|
||||||
|
|
||||||
|
ws.onclose = function(event) {
|
||||||
|
$("#message").append('</p></div>');
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
{# function send() {#}
|
||||||
|
{# var ws = new WebSocket("ws://j:8080/send");#}
|
||||||
|
{##}
|
||||||
|
{# var data = {#}
|
||||||
|
{# input:$("#input_data").val(),#}
|
||||||
|
{# };#}
|
||||||
|
{##}
|
||||||
|
{# $("#message").empty();#}
|
||||||
|
{# ws.onopen = function() {#}
|
||||||
|
{# ws.send(JSON.stringify(data));#}
|
||||||
|
{# };#}
|
||||||
|
{##}
|
||||||
|
{# $("#message").append('<div class="panel-body"><p>');#}
|
||||||
|
{# ws.onmessage = function(event) {#}
|
||||||
|
{# $("#message").append(JSON.parse(event.data).input + "<br>");#}
|
||||||
|
{# };#}
|
||||||
|
{##}
|
||||||
|
{# ws.onclose = function(event) {#}
|
||||||
|
{# $("#message").append('</p></div>');#}
|
||||||
|
{# };#}
|
||||||
|
{# }#}
|
||||||
|
|
||||||
|
function disconnect(){
|
||||||
|
ws.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="test">
|
||||||
|
<form class="form-horizontal" role="form">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h5 class="panel-title">>>输入</h5>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-md-8">
|
||||||
|
<input type="text" class="form-control" id="input_data" value="">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-md-8">
|
||||||
|
<input type="button" class="btn btn-success" id="input_1_btn" onclick="connect();" value="连接" />
|
||||||
|
<input type="button" class="btn btn-success" id="input_btn" onclick="send();" value="发送" />
|
||||||
|
<input type="button" class="btn btn-success" id="input_2_btn" onclick="close();" value="关闭" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h5 class="panel-title">>> 输出</h5>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<div id="message"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</html>
|
Loading…
Reference in New Issue