设为首页 收藏本站
查看: 1110|回复: 0

[经验分享] websocket 和 ansible配合Tomcat实时日志给前端展示

[复制链接]

尚未签到

发表于 2017-12-26 09:33:19 | 显示全部楼层 |阅读模式
$(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;
  }

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-428137-1-1.html 上篇帖子: 如此的完美和无懈可击 下篇帖子: Linux系统下分割tomcat日志
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表