描述
最近使用node實(shí)現(xiàn)了一個(gè)遠(yuǎn)程桌面監(jiān)控的應(yīng)用,分為服務(wù)端和客戶端,客戶端可以實(shí)時(shí)監(jiān)控服務(wù)端的桌面,并且可以通過鼠標(biāo)和鍵盤來控制服務(wù)端的桌面。
這里因?yàn)槲沂怯玫耐慌_電腦,所以監(jiān)控畫面是這樣的,當(dāng)然使用兩臺電腦一個(gè)跑客戶端,一個(gè)跑服務(wù)端才有意義。
原理
其實(shí)這個(gè)應(yīng)用的功能主要分為兩部分,一是實(shí)現(xiàn)監(jiān)控,即在客戶端可以看到服務(wù)端的桌面,這部分功能是通過定時(shí)截圖來實(shí)現(xiàn)的,比如服務(wù)端一秒截幾次圖,然后通過socketio發(fā)送到客戶端,客戶端通過改變img的src來實(shí)現(xiàn)一幀幀的顯示最新的圖片,這樣就能看到動(dòng)態(tài)的桌面了。監(jiān)控就是這樣實(shí)現(xiàn)的。
另一個(gè)功能是控制,即客戶端對監(jiān)控畫面的操作,包括鼠標(biāo)和鍵盤的操作都可以在服務(wù)端的桌面真正的生效,這部分功能的實(shí)現(xiàn)是在electron的應(yīng)用中監(jiān)聽了所有的鼠標(biāo)和鍵盤事件,比如keydown、keyup、keypress,mousedown、mouseup、mousemove、click等,然后通過socketio把事件傳遞到服務(wù)端,服務(wù)端通過 robot-js來執(zhí)行不同的事件,這樣就能使得客戶端的事件在服務(wù)端觸發(fā)了。
實(shí)現(xiàn)
原理講完,我們來具體實(shí)現(xiàn)一下(源碼鏈接在這)。
實(shí)現(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實(shí)現(xiàn)遠(yuǎn)程桌面監(jiān)控的方法步驟-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://bm7419.com/article20/dpoeco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、品牌網(wǎng)站設(shè)計(jì)、品牌網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、虛擬主機(jī)、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容