本文介绍一个基于websocket实现的远程实时日志系统,可以通过浏览器查看远程移动设备的实时运行日志。
系统由三个部分组成:
1. 服务器:与移动设备和浏览器建立websocket连接,将移动设备websocket上读取的实时日志转发到对应的浏览器的websocket中
2. 浏览器日志查看页面:与服务器建立websocket连接,通过websocket接收指定设备的实时运行日志并显示
3. 移动设备:与服务器建立websocket连接,将运行日志通过websocket连接上传至服务器
服务器端实现
Tomcat 7.0.27 开始支持Websocket了。本文的服务器端Servlet程序是搭建在Tomcat上的。关于在Tomcat上面实现支持websocket的servlet,可以参考
服务器Servlet源码:
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArraySet;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import org.apache.catalina.websocket.MessageInbound;
import org.apache.catalina.websocket.StreamInbound;
import org.apache.catalina.websocket.WebSocketServlet;
import org.apache.catalina.websocket.WsOutbound;
/**
* Servlet implementation class WebLogcat
*/
@WebServlet("/WebLogcat")
public class WebLogcat extends WebSocketServlet {
private static final long serialVersionUID = 1L;
private final Set
connections =
new CopyOnWriteArraySet
();
private final Map
devices =
new ConcurrentHashMap
();
private final Map<String, Set
> browsers =
new ConcurrentHashMap<String, Set
>(); @Override protected StreamInbound createWebSocketInbound(String arg0, HttpServletRequest arg1) { String id = arg1.getParameter("id"); String type = arg1.getParameter("type"); if( id != null && type != null ) { if( type.equalsIgnoreCase("device") ) { return new DeviceMessageInbound( id ); } else if( type.equalsIgnoreCase("browser") ) { return new BrowserMessageInbound( id ); } } // return NULL will lead to Exception return new LogMessageInbound(); } private final class DeviceMessageInbound extends MessageInbound { private String _id; DeviceMessageInbound(String id) { _id = id; } @Override protected void onClose(int status) { // remove me from device hash map devices.remove(_id); super.onClose(status); } @Override protec

本文介绍了如何通过WebSocket构建一个系统,允许用户在浏览器中实时查看远程移动设备的日志。系统包括服务器、浏览器日志页面和移动设备三个部分。服务器基于Tomcat实现WebSocket连接,设备端使用libwebsocket作为客户端,浏览器端接收并显示设备日志。
最低0.47元/天 解锁文章
2003

被折叠的 条评论
为什么被折叠?



