技巧之如何快速使用websocket来监控标准输出
为啥是Websocket
- 服务端可以主动推送消息到浏览器端。比如服务端实时在打印日志,这是一个标准输出,可以实时将日志推送到浏览器。
为啥用websocketd (https://github.com/joewalnes/websocketd)
- 后台脚本不限语言,标准输入(stdin)就是 WebSocket 的输入,标准输出(stdout)就是 WebSocket 的输出。(http://www.ruanyifeng.com/blog/2017/05/websocket.html)
举例
- 定时打印当前时间
import datetime,time
from sys import stdout
while True:
    now = time.strftime("%Y-%m-%d %H:%M:%S")
    print now
    stdout.flush()
    time.sleep(2)
- 这是标准输出
root@ubuntu:~# python test.py
2018-12-17 09:57:37
2018-12-17 09:57:39
2018-12-17 09:57:41
2018-12-17 09:57:43
2018-12-17 09:57:45
2018-12-17 09:57:47
- 启动websocketd
root@ubuntu:~# websocketd --port=9000  python test.py
- 浏览器连接websocketd服务
<!DOCTYPE html>
<html>
  <head>
    <title>websocketd  example</title>
    <style>
      #count {
        font: bold 150px arial;
        margin: auto;
        padding: 10px;
        text-align: center;
      }
    </style>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
  </head>
  <body>
<table border="1px #ooo" id="logtable" cellpadding="0"
   cellspacing="0" width="30%">
   <tr align="center">
    <td width="100%">log</td>
   </tr>
  </table>
    <script>
	  function addTr(tab, row, trHtml){
	     var $tr=$("#"+tab+" tr").eq(row);
	     if($tr.size()==0){
		alert("id not exit");
		return;
	     }
	     $tr.after(trHtml);
	  };
          //addTr('logtable', -1, 'xxxxxxxxxx');
      var ws = new WebSocket('ws://' + (location.host ? location.host : "localhost:9000") + "/");
      ws.onopen = function() {
        document.body.style.backgroundColor = '#cfc';
      };
      ws.onclose = function() {
        document.body.style.backgroundColor = null;
      };
      ws.onmessage = function(event) {
       console.log(event.data);
        //document.getElementById('count').textContent = event.data;
        addTr('logtable', -1, '<tr><td>' +  event.data + '</td></tr>')
      };
    </script>
  </body>
</html>
- 效果图

技巧之如何快速使用websocket来监控标准输出的更多相关文章
- 八问WebSocket协议:为你快速解答WebSocket热门疑问
		一.引言 WebSocket是一种比较新的协议,它是伴随着html5规范而生的,虽然还比较年轻,但大多主流浏览器都已经支持.它使用方面.应用广泛,已经渗透到前后端开发的各种场景中. 对http一问一答 ... 
- Windows下快速安装CACTI流量监控
		Windows下快速安装CACTI流量监控 原文 http://os.51cto.com/art/201111/300977.htm CACTI是一套PHP程序,它利用SNMPGET采集数据,使用R ... 
- 【win8技巧】win8快速切换后台应用
		今天闲着没事来介绍下win8的使用技巧,不得不说win8把PC带入了Pad时代. 第一招:Win + Tab 在屏幕的最左边就会出现我们想要的后台应用,类似安卓的长按Home的最近任务. 第二招:Al ... 
- SpringBoot+WebSocket实时监控异常
		写在前面 此异常非彼异常,标题所说的异常是业务上的异常. 最近做了一个需求,消防的设备巡检,如果巡检发现异常,通过手机端提交,后台的实时监控页面实时获取到该设备的信息及位置,然后安排员工去处理. 因为 ... 
- 使用Node.js快速搭建WebSocket server
		原文地址:http://my.oschina.net/yushulx/blog/309413 目录[-] 安装 服务端 客户端 参考 安装 ? 1 npm install ws 服务端 server. ... 
- 「技巧」如何快速安装 Sketch 插件
		Sketch拥有强大丰富的插件,但是这些插件天各一方,四处查找下载地址非常麻烦.这里提供一个技巧,通过一个入口可以安装各种插件,基本涵盖了市面上所有靠谱的插件. 准备 Sketch54 Runner ... 
- 巧用ELK快速实现网站流量监控可视化
		前言 本文可能不会详细记录每一步实现的过程,但一定程度上可以引领小伙伴走向更开阔的视野,串联每个环节,呈现予你不一样的效果. 业务规模 8个平台 100+台服务器 10+个集群分组 微服务600+ 用 ... 
- 用nodejs快速实现websocket服务端(带SSL证书生成)
		有不少公司将nodejs的socket.io作为websocket的解决方案,很遗憾的是socket.io是对websocket的封装,并不支持html5原始的websocket协议,微信小程序使用的 ... 
- 快速构建ceph可视化监控系统-转载
		前言 ceph的可视化方案很多,本篇介绍的是比较简单的一种方式,并且对包都进行了二次封装,所以能够在极短的时间内构建出一个可视化的监控系统 本系统组件如下: ceph-jewel版本 ceph_exp ... 
随机推荐
- 第87天:HTML5中新选择器querySelector的使用
			一.HTML5新选择器 1.document.querySelector("selector");selector:根据CSS选择器返回第一个匹配到的元素,如果没有匹配到,则返回n ... 
- js null表示没有取到html中的元素 undenfind 表示没有被赋值
			js null表示没有取到html中的元素 undenfind 表示没有被赋值 
- C++解析(8):C++中的新成员
			0.目录 1.动态内存分配 1.1 C++中的动态内存分配 1.2 new关键字与malloc函数的区别 1.3 new关键字的初始化 2.命名空间 2.1 作用域与命名空间 2.2 命名空间的定义和 ... 
- DP——P2300 合并神犇
			题目背景 loidc来到了NOI的赛场上,他在那里看到了好多神犇. 题目描述 神犇们现在正排成一排在刷题.每个神犇都有一个能力值p[i].loidc认为坐在附近的金牌爷能力参差不齐非常难受.于是loi ... 
- 洛谷U14200 Changing 题解   【杨辉三角】
			题目描述 有nnn盏灯环形排列,顺时针依次标号为1⋯n1\cdots n1⋯n.初始时刻为000,初始时刻第iii盏灯的亮灭aia_iai给定,000表示灭,111表示亮.下一时刻每盏灯的亮灭取决于 ... 
- Zabbix Agent  for Linux部署(四)
			一.环境介绍 二.代理安装 1.将代理程序拷贝至Node1服务器的/usr/src/zabbix3.4.5/目录下 [root@Node3 zabbix3.-.el7.x86_64.rpm zabbi ... 
- 【bzoj4036】按位或
			Portal --> bzoj4036 Solution 感觉容斥的东西内容有点qwq多啊qwq还是以题目的形式来慢慢补档好了 这里补的是min-max容斥  其实min-max容斥 ... 
- profit
			Portal --> broken qwq Description 大M成立的怪兽电力公司最近刚建立了一个网站.这个季度共有\(n\)天,第\(i\)天共有\(v[i]\)个用户点击该网站,总的 ... 
- 图像处理之Canny边缘检测
			http://blog.csdn.net/jia20003/article/details/41173767 图像处理之Canny 边缘检测 一:历史 Canny边缘检测算法是1986年有John F ... 
- 洛谷P1445 [Violet] 樱花 (数学)
			洛谷P1445 [Violet] 樱花 题目背景 我很愤怒 题目描述 求方程 1/X+1/Y=1/(N!) 的正整数解的组数,其中N≤10^6. 解的组数,应模1e9+7. 输入输出格式 输入格式: ... 
