基于python的websocket开发,tomcat日志web页面实时打印监控案例
2017-03-16 15:59
1036 查看
web socket 接收器:webSocket.py
相关依赖
服务端:logs.py
相关依赖:
应用前端:logs.html
socket.onerror = function(msg) {
log("websocket error!");
};
测试一把:
结束语:
前端 ——》 接收器 《—— 服务端
以需求用例为基,Case&Coding两条线并行,服务(M)&消费(VC)分离,单元、接口、功能、集成四层质量管理,自动化集成、测试、交付全程支持。 3个大阶段(需求分析阶段、研发准备阶段、研发测试阶段)16个小历程(*)确定好边界,明确好对接产物,做好服务管理。
在使用这段python代码之前,先在安装以下模块:
pip install gevent-websocket
pip install gevent
pip install bottle
from bottle import request, Bottle, abort
from geventwebsocket import WebSocketError
from gevent.pywsgi import WSGIServer
from geventwebsocket.handler import WebSocketHandler
app = Bottle()
users = set()
@app.get('/websocket/')
def handle_websocket():
wsock = request.environ.get('wsgi.websocket')
users.add(wsock)
if not wsock:
abort(400, 'Expected WebSocket request.')
while True:
try:
message = wsock.receive()
except WebSocketError:
break
print u"现有连接用户:%s" % (len(users))
if message:
for user in users:
try:
user.send(message)
except WebSocketError:
print u'某用户已断开连接'
# 如果有客户端断开,则删除这个断开的websocket
users.remove(wsock)
server = WSGIServer(("0.0.0.0", 8000), app,handler_class=WebSocketHandler)
server.serve_forever()
这2篇文章的websocket服务端代码,都差不多,只是用的模块不一样而已,前者用的是bottle-websocket扩展包,此篇用的是gevent-websocket包
其实还可以用websocket,开发成一个聊天室的,很简单,只是html和javascripts要多开发点功能而已,有兴趣的自己试试
如何在python终端中调试呢,先要安装一个python的websocket-client包(pip install websocket-client),以下是相关的调试代码:
>>> from websocket import create_connection
>>> ws_server = "ws://192.168.1.221:8000/websocket/"
>>> ws = create_connection(ws_server)
>>> ws.send('hello,http://www.linuxyw.com') #发送数据
34
>>> ws.recv() #获取数据
'hello,http://www.linuxyw.com'
>>> ws.send('欢迎光临我的博客')
30
>>> ws.recv()
'\xe6\xac\xa2\xe8\xbf\x8e\xe5\x85\x89\xe4\xb8\xb4\xe6\x88\x91\xe7\x9a\x84\xe5\x8d\x9a\xe5\xae\xa2'
send("内容") :是发送数据给websocket服务端
recv() : 是从websocket服务端获取数据
相关依赖
# pip install bottle gevent gevent-websocket argparse
from bottle import request, Bottle, abort from geventwebsocket import WebSocketError from gevent.pywsgi import WSGIServer from flask import request from geventwebsocket.handler import WebSocketHandler from bottle import get, post, request app = Bottle() users = {} @app.get('/websocket/<token>/<senduser>') def handle_websocket(token,senduser): wsock = request.environ.get('wsgi.websocket') users[token] = wsock if not wsock: abort(400, 'Expected WebSocket request.') while True: try: message = wsock.receive() except WebSocketError: breakif message: try: users[senduser].send(message) except WebSocketError: print u'kill' server = WSGIServer(("0.0.0.0", 1019), app,handler_class=WebSocketHandler) server.serve_forever()
服务端:logs.py
相关依赖:
pip install websocket-client
import subprocess from websocket import create_connection ws_server = "ws://172.18.30.19:1010/websocket/<token>/<senduser>" ws = create_connection(ws_server) command='sshpass -p 123456 ssh 192.168.20.200 -p 32776 -o StrictHostKeychecking=no "tail -f /root/tomcat-8.0/logs/catalina.out"' popen=subprocess.Popen(command,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True) while True: line=popen.stdout.readline().strip() ws.send(line)
应用前端:logs.html
<!DOCTYPE html> <html> <head> <title>LOG+</title> <style> html, body { font: normal 0.9em arial, helvetica; } #log { width: 440px; height: 200px; border: 1px solid #7F9DB9; overflow: auto; } #msg { width: 330px; } </style> <script> var socket; function init() { var host = "ws://172.18.30.19:1010/websocket/<token>/<senduser>"; try { socket = new WebSocket(host); socket.onopen = function (msg) { log('Connected'); }; socket.onmessage = function (msg) { log(msg.data); }; socket.onclose = function (msg) { log("Lose Connection!"); };
socket.onerror = function(msg) {
log("websocket error!");
};
} catch (ex) { log(ex); } $("msg").focus(); } function send() { var txt, msg; txt = $("msg"); msg = txt.value; if (!msg) { alert("Message can not be empty"); return; } txt.value = ""; txt.focus(); try { socket.send(msg); } catch (ex) { log(ex); } } window.onbeforeunload = function () { try { socket.send('quit'); socket.close(); socket = null; } catch (ex) { log(ex); } }; function $(id) { return document.getElementById(id); } function log(msg) { $("log").innerHTML += "<br>" + msg; } function onkey(event) { if (event.keyCode == 13) { send(); } } </script> </head> <body onload="init()"> <h3>WebSocket</h3> <br><br> <div id="log"></div> <input id="msg" type="textbox" onkeypress="onkey(event)"/> <button onclick="send()">发送</button> </body> </html>
测试一把:
结束语:
前端 ——》 接收器 《—— 服务端
以需求用例为基,Case&Coding两条线并行,服务(M)&消费(VC)分离,单元、接口、功能、集成四层质量管理,自动化集成、测试、交付全程支持。 3个大阶段(需求分析阶段、研发准备阶段、研发测试阶段)16个小历程(*)确定好边界,明确好对接产物,做好服务管理。
在使用这段python代码之前,先在安装以下模块:
pip install gevent-websocket
pip install gevent
pip install bottle
from bottle import request, Bottle, abort
from geventwebsocket import WebSocketError
from gevent.pywsgi import WSGIServer
from geventwebsocket.handler import WebSocketHandler
app = Bottle()
users = set()
@app.get('/websocket/')
def handle_websocket():
wsock = request.environ.get('wsgi.websocket')
users.add(wsock)
if not wsock:
abort(400, 'Expected WebSocket request.')
while True:
try:
message = wsock.receive()
except WebSocketError:
break
print u"现有连接用户:%s" % (len(users))
if message:
for user in users:
try:
user.send(message)
except WebSocketError:
print u'某用户已断开连接'
# 如果有客户端断开,则删除这个断开的websocket
users.remove(wsock)
server = WSGIServer(("0.0.0.0", 8000), app,handler_class=WebSocketHandler)
server.serve_forever()
这2篇文章的websocket服务端代码,都差不多,只是用的模块不一样而已,前者用的是bottle-websocket扩展包,此篇用的是gevent-websocket包
其实还可以用websocket,开发成一个聊天室的,很简单,只是html和javascripts要多开发点功能而已,有兴趣的自己试试
如何在python终端中调试呢,先要安装一个python的websocket-client包(pip install websocket-client),以下是相关的调试代码:
>>> from websocket import create_connection
>>> ws_server = "ws://192.168.1.221:8000/websocket/"
>>> ws = create_connection(ws_server)
>>> ws.send('hello,http://www.linuxyw.com') #发送数据
34
>>> ws.recv() #获取数据
'hello,http://www.linuxyw.com'
>>> ws.send('欢迎光临我的博客')
30
>>> ws.recv()
'\xe6\xac\xa2\xe8\xbf\x8e\xe5\x85\x89\xe4\xb8\xb4\xe6\x88\x91\xe7\x9a\x84\xe5\x8d\x9a\xe5\xae\xa2'
send("内容") :是发送数据给websocket服务端
recv() : 是从websocket服务端获取数据
相关文章推荐
- java用webSocket实现tomcat的日志实时输出到web页面______软件开发-JAVA
- Java用webSocket实现tomcat的日志实时输出到web页面
- Java用webSocket实现tomcat的日志实时输出到web页面
- Java用webSocket实现tomcat的日志实时输出到web页面
- Java用webSocket实现tomcat的日志实时输出到web页面
- Java用webSocket实现tomcat的日志实时输出到web页面
- 基于https实现webSocket通信实时在web页面输出日志(两个日志输出)
- 基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
- 运维开发:python websocket网页实时显示远程服务器日志信息
- 基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
- 如何把tomcat的日志实时输出到web页面上
- 基于BootStrap Metronic开发框架经验小结【九】实现Web页面内容的打印预览和保存操作
- 基于Saltstatck实现页面实时显示tomcat启动日志(17)
- 基于Metronic的Bootstrap开发框架经验总结(9)--实现Web页面内容的打印预览和保存操作
- 基于Metronic的Bootstrap开发框架经验总结(9)--实现Web页面内容的打印预览和保存操作
- python实现websocket服务器,可以在web实时显示远程服务器日志
- (转)基于Metronic的Bootstrap开发框架经验总结(9)--实现Web页面内容的打印预览和保存操作
- 基于Metronic的Bootstrap开发框架经验总结(9)--实现Web页面内容的打印预览和保存操作
- 基于Metronic的Bootstrap开发框架经验总结(9)--实现Web页面内容的打印预览和保存操作
- 基于Metronic的Bootstrap开发框架经验总结(9)--实现Web页面内容的打印预览和保存操作