|
$(function() { t=null;
// connection全局,关闭弹窗作用,websocket关闭操作时候
connection=null;
// 连接成功后,置为true
flag=false;
// 关闭模态框调用的函数
$('#myModal').on('hide.bs.modal',
function() {
//alert('嘿,我听说您喜欢模态框...');
if(t == null){
}else{
clearInterval(t);
}
//clearInterval(t);
$('.modal-footer').empty();
if(connection == null){
}else{
// 关闭websocket连接
connection.send('close');
}
})
});
//pre标签外部的div标签,实现弹窗的滚轮一直在下面
function Setdeep(){
$('.modal-body').scrollTop($('.modal-body')[0].scrollHeight);
}
/*
下面定义一些函数,用做websocket的连接相关
*/
// 发送关闭websocket命令函数
function wsClose () {
connection.send('close');
console.log("Closed");
}
// 收到callback函数回调,插入内容
function wsMessage (event) {
$('.modal-body').find('pre').append('<code>' + event.data + '</code>');
Setdeep();
}
// 连接成功,调用函数回调,flag置为true
function wsOpen (event,ip) {
flag = true;
console.log('Connected to: ' + event.currentTarget.URL);
//connection.send('10.187.109.116');
}
// websocket异常报错console输出
function wsError(event) {
console.log("Error: " + event.data);
}
//Tomcat日志查看清理函数,弹窗
function tomcatLog(ths){
//if( connection == null ){}else{connection.send('close');}
$('#myModal').find('.modal-dialog').removeClass('modal-sm');
$('#myModal').find('.modal-dialog').addClass('modal-lg');
var ip = $(ths).parents('tr').find("td:first").text();
$('#myModal').find('.modal-body').removeClass('hide');
$('#myModal').find('.modal-body').empty();
$('#myModal').find('.modal-body').css("height","750px");
$('.modal-footer').empty();
$('#myModal').find('.modal-body').append('<img src="/static/image/loading.gif"></img>');
$('#myModalLabel').text(ip + ' Tomcat日志');
$('.modal-body').append('<pre>' + '<code>' + '</code>' + '</pre>');
// 建立websocket连接,ws是标签协议,目前nginx上还没更改;
connection = new WebSocket('ws://10.187.196.225:65535/index/websocket_demo/');
connection.onopen = wsOpen;
connection.onclose = wsClose;
connection.onmessage = wsMessage;
connection.onerror = wsError;
// 每2秒判断一下是否成功连接上了
setInterval(function(){
if(flag){
$('.modal-body').find('img').remove();
connection.send(ip);
// 连接置位符置位false,防止频繁发送数据给服务器,主要服务器推数据
flag = false;
$('.modal-footer').append('<button type="button">关闭实时刷新</button>')
$('.modal-footer').append('<button type="button">下载日志文件</button>');
}
},2000);
}
//获取pre标签的中内容给用户下载
function dowlandTomcatLog(ths){
var tomcatLogContent = $('.modal-body').find('pre').first().text();
var blob = stringToBlob(tomcatLogContent);
//var blob = stringToBlob('hello jd.com\r\nhello baidu.com');
download('tomcatLog.txt', blob);
}
/* fileName: 默认下载文件名
blob: 下载Blob对象
*/
function download(fileName, blob){
var aLink = document.createElement('a');
var evt = document.createEvent("MouseEvents");
evt.initEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
aLink.download = fileName;
aLink.href = URL.createObjectURL(blob);
aLink.dispatchEvent(evt);
}
/* 文本转Blob对象 */
function stringToBlob(text) {
var arr_text = text.split("\n");
for (var i = 0;i<arr_text.length;i++){
arr_text = arr_text + '\r\n';
}
var blob = new Blob([arr_text],{type : 'text/html'});
return blob;
} |
|
|