描述
最近使用node實現(xiàn)了一個遠(yuǎn)程桌面監(jiān)控的應(yīng)用,分為服務(wù)端和客戶端,客戶端可以實時監(jiān)控服務(wù)端的桌面,并且可以通過鼠標(biāo)和鍵盤來控制服務(wù)端的桌面。
這里因為我是用的同一臺電腦,所以監(jiān)控畫面是這樣的,當(dāng)然使用兩臺電腦一個跑客戶端,一個跑服務(wù)端才有意義。
原理
其實這個應(yīng)用的功能主要分為兩部分,一是實現(xiàn)監(jiān)控,即在客戶端可以看到服務(wù)端的桌面,這部分功能是通過定時截圖來實現(xiàn)的,比如服務(wù)端一秒截幾次圖,然后通過socketio發(fā)送到客戶端,客戶端通過改變img的src來實現(xiàn)一幀幀的顯示最新的圖片,這樣就能看到動態(tài)的桌面了。監(jiān)控就是這樣實現(xiàn)的。
另一個功能是控制,即客戶端對監(jiān)控畫面的操作,包括鼠標(biāo)和鍵盤的操作都可以在服務(wù)端的桌面真正的生效,這部分功能的實現(xiàn)是在electron的應(yīng)用中監(jiān)聽了所有的鼠標(biāo)和鍵盤事件,比如keydown、keyup、keypress,mousedown、mouseup、mousemove、click等,然后通過socketio把事件傳遞到服務(wù)端,服務(wù)端通過 robot-js來執(zhí)行不同的事件,這樣就能使得客戶端的事件在服務(wù)端觸發(fā)了。
實現(xiàn)
原理講完,我們來具體實現(xiàn)一下(源碼鏈接在這)。
實現(xiàn)socket通信
首先,服務(wù)端和客戶端分別引入socket.io和socket.io-client, 分別初始化
服務(wù)端:
const app = new Koa(); const server = http.createServer(app.callback()); createSocketIO(server); app.use((ctx): void => { ctx.body = 'please connect use socket'; }); server.listen(port, (): void => { console.log('server started at http://localhost:' + port); }); //createSocketIO const io = socketIO(server, { pingInterval: 10000, pingTimeout: 5000, cookie: false }); io.on('connect', (socket): void => { socket.emit('msg', 'connected'); }
當(dāng)前標(biāo)題:Node.js實現(xiàn)遠(yuǎn)程桌面監(jiān)控的方法步驟-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://jinyejixie.com/article20/dpoeco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、品牌網(wǎng)站設(shè)計、品牌網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、虛擬主機、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容