websocket 和 ansible配合Tomcat实时日志给前端展示
生活随笔
收集整理的這篇文章主要介紹了
websocket 和 ansible配合Tomcat实时日志给前端展示
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
業(yè)務流程圖如下
效果圖展示
1.django安裝websocket模塊
pip install dwebsocket2.shell腳本
用來傳遞不同的行號輸出不同的內(nèi)容;
第一個參數(shù)為0的時候,默認輸出最后200行內(nèi)容
第一個參數(shù)為其余數(shù)字時候,和總行數(shù)比較,取差值內(nèi)容
3.django后臺試圖函數(shù)
views.py對應了/index/websocket_demo/函數(shù)處理
應用名字叫做app
4.前端頁面
$(function() {t=null;// connection全局,關(guān)閉彈窗作用,websocket關(guān)閉操作時候connection=null;// 連接成功后,置為trueflag=false;// 關(guān)閉模態(tài)框調(diào)用的函數(shù)$('#myModal').on('hide.bs.modal',function() {//alert('嘿,我聽說您喜歡模態(tài)框...');if(t == null){}else{clearInterval(t); }//clearInterval(t);$('.modal-footer').empty();if(connection == null){}else{// 關(guān)閉websocket連接connection.send('close');}}) });//pre標簽外部的div標簽,實現(xiàn)彈窗的滾輪一直在下面 function Setdeep(){$('.modal-body').scrollTop($('.modal-body')[0].scrollHeight); }/*下面定義一些函數(shù),用做websocket的連接相關(guān) */ // 發(fā)送關(guān)閉websocket命令函數(shù) function wsClose () {connection.send('close');console.log("Closed"); } // 收到callback函數(shù)回調(diào),插入內(nèi)容 function wsMessage (event) {$('.modal-body').find('pre').append('<code class="avrasm">' + event.data + '</code>');Setdeep(); } // 連接成功,調(diào)用函數(shù)回調(diào),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日志查看清理函數(shù),彈窗 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 class="avrasm">' + '</code>' + '</pre>');// 建立websocket連接,ws是標簽協(xié)議,目前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,防止頻繁發(fā)送數(shù)據(jù)給服務器,主要服務器推數(shù)據(jù)flag = false;$('.modal-footer').append('<button type="button" class="btn btn-danger" onclick="wsClose();buttonDisabled(this);">關(guān)閉實時刷新</button>')$('.modal-footer').append('<button type="button" class="btn btn-default" onclick="dowlandTomcatLog(this);">下載日志文件</button>');}},2000); }//獲取pre標簽的中內(nèi)容給用戶下載 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); }/* 文本轉(zhuǎn)Blob對象 */ function stringToBlob(text) {var arr_text = text.split("\n");for (var i = 0;i<arr_text.length;i++){arr_text[i] = arr_text[i] + '\r\n';}var blob = new Blob([arr_text],{type : 'text/html'});return blob; }轉(zhuǎn)載于:https://www.cnblogs.com/PythonOrg/p/6519409.html
總結(jié)
以上是生活随笔為你收集整理的websocket 和 ansible配合Tomcat实时日志给前端展示的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【java】 ssm+ssh原生态框架(
- 下一篇: (四)DOM对象和jQuery对象