Android性能监控
Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好.就用它作为我们简易系统的转发服务器。
WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
先安装websocket模块:
npm install nodejs-websocketserver.js如下
var ws = require("nodejs-websocket");
console.log("建立websocket连接...")
var server = ws.createServer(function(conn){
//text:这边是收到文本信息时候触发
conn.on(“text", function (str) {
console.log("收到的信息为:"+str)
conn.sendText(str)
})
conn.on("close", function (code, reason) {
console.log(“关闭websocket连接")
});
conn.on("error", function (code, reason) {
console.log("websocket异常关闭")
});
}).listen(8001)运行:
node server.js借助 OkHttp 可以很轻易的实现 WebSocket,它的 OkHttpClient 中,提供了 newWebSocket() 方法,可以直接建立一个 WebSocket 连接并完成通信。
fun connect(url:String) {
this.mBaseUrl = url
//构造request对象
val request: Request = Request.Builder()
.url(mBaseUrl)//服务器地址
.build()
mWebSocket = client.newWebSocket(request, this)
}发送一个消息看看
fun send(text: String) {
mWebSocket?.send(text)
}
getInstance()?.send("这是从手机发送的一个消息。")Android 可以通过Runtime.getRuntime().exec()方法来执行命令或者创建进程。
try {
exec = Runtime.getRuntime().exec("logcat -v threadtime")
inputStream = exec.inputStream
reader = BufferedReader(InputStreamReader(inputStream))
while (readerLogging) {
val line: String = reader.readLine()
if (line != null) {
//…….发送给node.js
}
}
} catch (e: Exception) {
e.printStackTrace()
} finally {
…..
}页面加一个按钮随打印日志
//startlogs
fun startlogs(view : View){
Log.d("LOG_TAG","this is a log"+Random().nextInt())
}左边是命令行终端 其实就跟AndroidStudio里的Logcat一样 异常日志:
var stackTraceElement = p1.stackTrace
var exStack:StringBuffer=StringBuffer();
for (s1 in stackTraceElement){
exStack.append(s1.toString())
exStack.append("\n")
}
WebSocketHelper.getInstance()?.send("logcat#"+exStack.toString())
这是有想法能不能有一个跟AS一样的UI,在浏览器实时查看??
目前采用方式node.js写的webSocketClient像这样:
灵感来自:


