精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

遙控你的電腦:通過Node.js和Socket.io實現(xiàn)手機(jī)的遠(yuǎn)程控制

移動開發(fā)
用手機(jī)來實現(xiàn)遠(yuǎn)程控制是不是很酷?你不需要去寫一個APP應(yīng)用來實現(xiàn)這種功能,現(xiàn)在的手機(jī)瀏覽器已經(jīng)支出了web socket技術(shù),這提供了很多的可能。這篇文章我們將用Node.js和Socket.io來實現(xiàn)手機(jī)控制PC的效果。

用手機(jī)來實現(xiàn)遠(yuǎn)程控制是不是很酷?你不需要去寫一個APP應(yīng)用來實現(xiàn)這種功能,現(xiàn)在的手機(jī)瀏覽器已經(jīng)支出了web socket技術(shù),這提供了很多的可能。

這篇文章我們將用Node.js和Socket.io來實現(xiàn)手機(jī)控制PC的效果。

我們不必到處尋找基于HTML5的這種應(yīng)用庫。我們將使用Reveal.js-它來處理幻燈片動畫效果,并支持鍵盤和觸摸事件。

我們不必自己來實現(xiàn)遠(yuǎn)程控制的接口,我們將實現(xiàn)手機(jī)和電腦的同步。這樣不僅能控制進(jìn)度,也能同步的顯示在你的手機(jī)上。

實現(xiàn)思路

技術(shù)上很簡單。Reveal.js讓當(dāng)前的幻燈片序號在URL的hash上(e.g. http://example.com/#/1).我們將這個hash發(fā)送到所有連接的設(shè)備上,

對應(yīng)的將會根據(jù)這個hash來自動的顯示響應(yīng)幻燈片。這樣的話,別人可以方便的直接通過url來直接訪問到顯示的頁面,所有我們需要輸入一個驗證碼

在連接之前進(jìn)行驗證。

要說的是Reveal.js已經(jīng)有一套API,我們可以直接調(diào)用來同步。但是hash變化的技術(shù)很簡單,我們可以直接來實現(xiàn)。

[[140461]]

運(yùn)行

你可以本地運(yùn)行示例,或者部署到能提供node.js環(huán)境的服務(wù)器上。本地運(yùn)行更簡單些,但是必須本地有node.js并執(zhí)行npm install.

運(yùn)行本地代碼

  • 下載示例代碼
  • 確保本地已經(jīng)安裝node.js。如果沒有,請安裝
  • 解壓剛才下載的代碼包
  • 打開終端進(jìn)入相應(yīng)的文件夾
  • 運(yùn)行npm install來安裝依賴包
  • 運(yùn)行node app.js來啟動應(yīng)用
  • PC端在瀏覽器打開http://localhost:8080,并輸入連接碼(默認(rèn)是kittens)
  • 在手機(jī)端瀏覽器打開http://,并輸入連接碼
  • 請享受

代碼

思路說完,讓我們來看看代碼。這主要涉及2個js文件-app.js服務(wù)端控制,script.js瀏覽器端。你可以運(yùn)行這個應(yīng)用在Node.js 1.10+或者io.js.

后端,我們用到了expressSocket.io。它主要用來響應(yīng)socket.io的事件監(jiān)聽。用express.static來讓public下的文件可以訪問到。

public/index.html文件保護(hù)顯示的代碼。express.static將會讓它自動顯示,所以我們不需要/來路由。

app.js

  1. // This is the server-side file of our mobile remote controller app. 
  2. // It initializes socket.io and a new express instance. 
  3. // Start it by running 'node app.js' from your terminal. 
  4. // Creating an express server 
  5. var express = require('express'),app = express(); 
  6. // This is needed if the app is run on heroku and other cloud providers: 
  7. var port = process.env.PORT || 8080
  8. // Initialize a new socket.io object. It is bound to 
  9. // the express app, which allows them to coexist. 
  10. var io = require('socket.io').listen(app.listen(port)); 
  11. // App Configuration 
  12. // Make the files in the public folder available to the world 
  13. app.use(express.static(__dirname + '/public')); 
  14. // This is a secret key that prevents others from opening your presentation 
  15. // and controlling it. Change it to something that only you know. 
  16. var secret = 'kittens'
  17. // Initialize a new socket.io application 
  18. var presentation = io.on('connection', function (socket) { 
  19.     // A new client has come online. Check the secret key and 
  20.     // emit a "granted" or "denied" message. 
  21.     socket.on('load', function(data){ 
  22.         socket.emit('access', { 
  23.             access: (data.key === secret ? "granted" : "denied"
  24.         }); 
  25.     }); 
  26.     // Clients send the 'slide-changed' message whenever they navigate to a new slide. 
  27.     socket.on('slide-changed', function(data){ 
  28.         // Check the secret key again 
  29.         if(data.key === secret) { 
  30.             // Tell all connected clients to navigate to the new slide 
  31.             presentation.emit('navigate', { 
  32.                 hash: data.hash 
  33.             }); 
  34.         } 
  35.     }); 
  36. }); 
  37. console.log('Your presentation is running on http://localhost:' + port); 

下面是前端的js文件,將監(jiān)聽hashchange事件,并發(fā)送socket.io消息到服務(wù)器端。

public/assets/js/script.js

 
  1. $(function() { 
  2.     // Apply a CSS filter with our blur class (see our assets/css/styles.css) 
  3.     var blurredElements = $('.homebanner, div.reveal').addClass('blur'); 
  4.     // Initialize the Reveal.js library with the default config options 
  5.     // See more here https://github.com/hakimel/reveal.js#configuration 
  6.     Reveal.initialize({ 
  7.         history: true        // Every slide will change the URL 
  8.     }); 
  9.     // Connect to the socket 
  10.     var socket = io(); 
  11.     // Variable initialization 
  12.     var form = $('form.login'), 
  13.         secretTextBox = form.find('input[type=text]'); 
  14.     var key = "", animationTimeout; 
  15.     // When the page is loaded it asks you for a key and sends it to the server 
  16.     form.submit(function(e){ 
  17.         e.preventDefault(); 
  18.         key = secretTextBox.val().trim(); 
  19.         // If there is a key, send it to the server-side 
  20.         // through the socket.io channel with a 'load' event. 
  21.         if(key.length) { 
  22.             socket.emit('load', { 
  23.                 key: key 
  24.             }); 
  25.         } 
  26.     }); 
  27.     // The server will either grant or deny access, depending on the secret key 
  28.     socket.on('access', function(data){ 
  29.         // Check if we have "granted" access. 
  30.         // If we do, we can continue with the presentation. 
  31.         if(data.access === "granted") { 
  32.             // Unblur everything 
  33.             blurredElements.removeClass('blurred'); 
  34.             form.hide(); 
  35.             var ignore = false
  36.             $(window).on('hashchange', function(){ 
  37.                 // Notify other clients that we have navigated to a new slide 
  38.                 // by sending the "slide-changed" message to socket.io 
  39.                 if(ignore){ 
  40.                     // You will learn more about "ignore" in a bit 
  41.                     return
  42.                 } 
  43.                 var hash = window.location.hash; 
  44.                 socket.emit('slide-changed', { 
  45.                     hash: hash, 
  46.                     key: key 
  47.                 }); 
  48.             }); 
  49.             socket.on('navigate', function(data){ 
  50.                 // Another device has changed its slide. Change it in this browser, too: 
  51.                 window.location.hash = data.hash; 
  52.                 // The "ignore" variable stops the hash change from 
  53.                 // triggering our hashchange handler above and sending 
  54.                 // us into a never-ending cycle. 
  55.                 ignore = true
  56.                 setInterval(function () { 
  57.                     ignore = false
  58.                 },100); 
  59.             }); 
  60.         } 
  61.         else { 
  62.             // Wrong secret key 
  63.             clearTimeout(animationTimeout); 
  64.             // Addding the "animation" class triggers the CSS keyframe 
  65.             // animation that shakes the text input. 
  66.             secretTextBox.addClass('denied animation'); 
  67.             animationTimeout = setTimeout(function(){ 
  68.                 secretTextBox.removeClass('animation'); 
  69.             }, 1000); 
  70.             form.show(); 
  71.         } 
  72.     }); 
  73. }); 

現(xiàn)在是幻燈放映時間

手機(jī)遠(yuǎn)程訪問控制已經(jīng)可以了。希望你能從中得到有趣的體驗。這種高端的玩具,還不快點(diǎn)兒操練起來!!

責(zé)任編輯:倪明 來源: tutorialzine
相關(guān)推薦

2011-09-08 13:53:31

Node.js

2013-10-23 17:17:31

Node.jsdoT

2014-04-10 09:43:00

Node.jsTwilio

2021-05-25 11:55:30

Python手機(jī)監(jiān)控遠(yuǎn)程

2014-04-10 09:55:46

手機(jī)Node.jswilio

2014-07-22 10:29:04

背包算法coffee

2019-07-26 14:40:58

Vue.jsSocket.IO前端

2016-11-22 13:25:28

Apache Spar大數(shù)據(jù)

2011-12-23 10:51:24

Node.js

2017-09-05 15:30:00

JavascriptSocket.ioNode.js

2014-01-17 17:33:32

遠(yuǎn)程開機(jī)

2022-09-04 15:54:10

Node.jsAPI技巧

2017-03-13 10:00:25

Chrome瀏覽器Windows 10

2022-04-01 08:02:32

Node.js快照加速hooks

2022-04-02 06:04:03

Node.js代碼緩存V8

2012-01-09 13:24:27

2014-01-07 17:21:27

遠(yuǎn)程控制

2021-11-16 08:51:29

Node JavaScript變量類型

2013-12-20 16:43:33

遠(yuǎn)程開機(jī)關(guān)機(jī)

2021-09-10 06:50:03

Node.jsSocket端口
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

久久视频这里有精品| 91精品国产自产在线| 中文字幕乱码一区| 91在线中文| 国产999精品久久| 久久天天躁狠狠躁夜夜躁| 杨幂一区二区国产精品| av小说在线播放| 99麻豆久久久国产精品免费| 欧美日韩国产成人| 国产三级国产精品| 国产黄色一区| 亚洲综合一区二区精品导航| 国产女主播一区二区三区| 久一视频在线观看| 免费欧美激情| 欧美福利一区二区| www.99热这里只有精品| a天堂中文在线| 国产精品1区2区3区| 91成人国产在线观看| 夫妇交换中文字幕| 色悠久久久久综合先锋影音下载| 韩国av一区二区三区在线观看| 日韩欧美卡一卡二| 欧美日本视频在线观看| 欧美三级理伦电影| 99久久精品久久久久久清纯| 91精品久久久久久久久青青| 99久久精品久久亚洲精品| 中文字幕久久精品一区二区| 在线中文字幕一区| 精品国偷自产一区二区三区| 都市激情一区| www.激情成人| 91精品国产综合久久香蕉| 三级黄色在线视频| 伊人情人综合网| 亚洲精品天天看| 中文字幕成人免费视频| 久久久123| 久久人人97超碰com| 91免费在线视频网站| 91视频久久久| 亚洲视频大全| 欧美激情按摩在线| 在线观看黄网址| 国产精品欧美在线观看| 欧美精品一区二区三区高清aⅴ| 超碰人人爱人人| eeuss影院在线观看| 91网站在线观看视频| 91精品黄色| 国产一区二区三区在线观看| 亚洲女人av| 欧美日本中文字幕| 在线观看天堂av| 国产精品一区二区三区av麻| 亚洲国产精品免费| 中文字幕永久视频| 日本久久免费| 黑人狂躁日本妞一区二区三区| 国模精品娜娜一二三区| 午夜精品久久久久久久第一页按摩| 国产精品av一区二区| 久久五月天色综合| 91 在线视频| 精品三级av在线导航| 制服丝袜亚洲精品中文字幕| 美女在线视频一区二区| 国精产品一区二区三区有限公司 | 国产精品久久久久久久久免费樱桃 | 热草久综合在线| 久久精品美女视频| 狠狠88综合久久久久综合网| 欧美精品在线第一页| 欧美在线视频第一页| 综合天堂av久久久久久久| 深夜精品寂寞黄网站在线观看| 中文字幕一二三区| 美女国产精品久久久| 欧美日韩高清一区| 91高清国产视频| a一区二区三区| 欧美日韩亚洲一区二区三区| 蜜臀久久99精品久久久酒店新书| 青春草在线观看| 91色九色蝌蚪| 日韩影片在线播放| 欧美精品hd| 亚洲欧美aⅴ...| 日本熟妇人妻xxxx| 中文字幕在线直播| 欧美在线短视频| 制服丝袜中文字幕第一页| 日韩精品一级| 日韩精品极品在线观看| 97人妻人人揉人人躁人人| 日韩av自拍| 欧美另类在线观看| 中文字幕一区二区三区精品 | 日本综合视频| 欧美日韩久久久一区| 成人高清在线观看视频| 国产精品一区二区三区美女| 亚洲免费av网址| 疯狂撞击丝袜人妻| 亚洲国产国产亚洲一二三| 日韩美女视频在线观看| 国产精品国产精品国产专区| 成人免费av网站| 日韩免费av电影| 午夜dj在线观看高清视频完整版| 国产精品色哟哟| 久久亚洲a v| 成人欧美大片| 欧美一级高清片在线观看| 黄色国产在线观看| 久久影院一区| 91国产精品91| 伊人精品在线视频| 91视频免费播放| 中文精品一区二区三区| 国产剧情av在线播放| 色94色欧美sute亚洲线路一久 | 国产日韩欧美三级| 国产在线高清精品| 日本高清视频www| 国产精品国产三级国产aⅴ原创 | 免费福利视频一区| 亚洲色图35p| 麻豆changesxxx国产| 午夜综合激情| 高清视频在线观看一区| av基地在线| 好吊成人免视频| 一二三区视频在线观看| 欧美电影免费| 国产成人精品999| 欧洲av在线播放| 亚洲色图制服诱惑| 三级a在线观看| 杨幂一区二区三区免费看视频| 亚洲男人第一av网站| 久久久久免费看| 精品一区二区综合| 色一情一乱一伦一区二区三区丨| 国产永久免费高清在线观看 | 美女国产精品| 国产伦精品一区二区三区视频孕妇| 五月婷中文字幕| 亚洲麻豆国产自偷在线| 九色porny自拍| 国产精品嫩模av在线| 8090成年在线看片午夜| 亚洲a视频在线观看| 亚洲欧美日韩成人高清在线一区| 久久久99精品视频| 成人污版视频| 中文字幕欧美日韩| 国产成人a v| 国产视频一区二区在线观看| 久久精品香蕉视频| 免费一区二区| 97国产精品免费视频| 国产人妻精品一区二区三区| 亚洲欧美一区二区三区国产精品 | 国产精品久久久久久亚洲色| 亚洲一区二区三区无吗| 444亚洲人体| 污污的视频在线观看| 制服丝袜亚洲精品中文字幕| 久久国产美女视频| 久久精品久久综合| 亚洲成人18| 欧美黑粗硬大| 欧美超级免费视 在线| 99久久精品国产成人一区二区| 成人激情小说乱人伦| 国产片侵犯亲女视频播放| 91成人午夜| 欧美国产日本高清在线| 色欲久久久天天天综合网| 天天色图综合网| 中文字幕国产专区| 日一区二区三区| 亚洲成色www久久网站| 国产精品一区免费在线| 九九久久精品一区| 天天躁日日躁狠狠躁喷水| 图片区小说区区亚洲影院| 久久人人爽人人爽人人片| 日韩电影网1区2区| 国产福利片一区二区| 亚洲一区二区免费在线观看| 国语自产偷拍精品视频偷| 免费观看黄一级视频| 在线看日本不卡| 日本高清一二三区| 成人精品免费看| 免费激情视频在线观看| 偷拍欧美精品| 国产区一区二区| 日韩av超清在线观看| 久久精品最新地址| 无码国产精品一区二区色情男同| 亚洲免费观看高清完整| av鲁丝一区鲁丝二区鲁丝三区| 欧美日韩国产欧| 久精品国产欧美| 国产成人精品一区二区三区在线| 亚洲欧美综合另类中字| 国产又粗又猛又黄又爽| 亚洲已满18点击进入久久| 丰满少妇一区二区三区| 国产中文字幕精品| 1024精品视频| 日韩精品一区二区久久| 国产激情一区二区三区在线观看| 你懂的视频在线观看| 91麻豆精品国产91| www.国产毛片| 亚洲一二三区在线观看| 免费黄在线观看| 大白屁股一区二区视频| 四虎永久在线精品无码视频| 88国产精品视频一区二区三区| 亚洲自拍偷拍色片视频| 国产在线看片免费视频在线观看| 欧美色网一区二区| 久久久全国免费视频| 国产免费观看久久| 亚洲成av人片在线观看无| 国产麻豆91精品| 欧美丰满熟妇xxxxx| 亚洲视频免费| 五月天av影院| 日韩精品一卡| 性高潮久久久久久久久| 中文字幕中文字幕精品| 国产精品视频入口| 精品久久免费| 国产日韩欧美成人| 快播电影网址老女人久久| 午夜精品在线观看| 丁香高清在线观看完整电影视频| 日韩黄在线观看| 国精品人妻无码一区二区三区喝尿| 亚洲午夜精品在线| 加勒比婷婷色综合久久| 日韩一区欧美一区| 很污很黄的网站| 国产偷国产偷精品高清尤物| 天堂www中文在线资源| 丰满亚洲少妇av| 亚洲区 欧美区| 国产传媒一区在线| 成人做爰69片免费| 国产成人超碰人人澡人人澡| 中文字幕第66页| 国产一区欧美二区| 在线观看网站黄| 国产精品正在播放| 手机在线播放av| 国产不卡免费视频| 国产白袜脚足j棉袜在线观看| 国产农村妇女精品一区二区| 先锋影音欧美| 欧美aaaa视频| 黄色a级在线观看| 亚洲综合五月| 99在线免费视频观看| 狠狠爱成人网| 女人扒开屁股爽桶30分钟| 久久久噜噜噜久久狠狠50岁| 粗暴91大变态调教| 老汉av免费一区二区三区| 中文字幕在线观看日| 国模无码大尺度一区二区三区| 国产美女主播在线播放 | 蜜臀av性久久久久蜜臀aⅴ四虎 | sdde在线播放一区二区| 欧美在线一二三区| 日本久久一二三四| 中文字幕第一页亚洲| 亚洲一级电影| 国产乱子夫妻xx黑人xyx真爽| 图片小说视频色综合| www.欧美黄色| 国产亚洲在线| 手机看片福利日韩| 国产精品综合久久| 丝袜熟女一区二区三区 | 亚洲精品www.| 国产成人精品影视| 中文字幕在线播放一区| 久久久久国产一区二区三区四区| 99re精彩视频| 国产电影一区在线| 国产十八熟妇av成人一区| 国产欧美一区二区在线观看| 小早川怜子一区二区的演员表| 国产色综合久久| 超碰手机在线观看| 福利二区91精品bt7086| 在线免费看av的网站| 精品福利二区三区| 成在在线免费视频| 久久理论片午夜琪琪电影网| 欧美最新精品| 91传媒视频免费| 免费欧美激情| 久久精品无码中文字幕| 丝袜诱惑亚洲看片| 亚欧美一区二区三区| 久久人人97超碰com| 强行糟蹋人妻hd中文| 欧美最新大片在线看| 国产免费福利视频| 亚洲精品ady| 国产在线69| 51视频国产精品一区二区| 亚洲精品大片| 日本在线视频一区| 亚洲人成免费| 欧美日韩中文不卡| 99久久夜色精品国产网站| 九九视频免费看| 欧美日韩www| 玖玖综合伊人| 1769国产精品| 风间由美中文字幕在线看视频国产欧美| 91嫩草免费看| av中字幕久久| 日韩欧美精品在线观看视频| 国产成+人+日韩+欧美+亚洲| 国产视频精品免费| 日韩人体视频一二区| 欧美一区二不卡视频| 不卡av日日日| av在线播放一区| 日本一区二区不卡高清更新| 国产精品一国产精品k频道56| 国产女女做受ⅹxx高潮| 成人av中文字幕| 九九热精品免费视频| 这里只有精品99re| 婷婷在线视频观看| 欧洲成人免费视频| 欧美日本成人| 日韩中文字幕二区| 久久免费偷拍视频| 欧美日韩综合在线观看| 精品成人a区在线观看| 羞羞视频在线观看免费| 亚洲一区二区三区777| 五月开心六月丁香综合色啪| 国产成人手机视频| 久久久久久9999| 伊人成年综合网| 亚洲日本欧美中文幕| 日本黄色一区| 亚洲欧洲精品一区二区| 老汉av免费一区二区三区| 91制片厂在线| 91精品欧美久久久久久动漫| 男人天堂手机在线| 91视频国产精品| 欧美在线日韩| 日本精品一二三区| 久久影视一区| 欧美激情精品久久久久久小说| 久久精品国产99久久6| 亚洲永久精品ww.7491进入| 欧美性生活大片免费观看网址| 亚洲综合精品国产一区二区三区| 欧美变态口味重另类| 四虎影视国产在线视频| 国产精品一区二区三区不卡| 亚洲欧洲一区二区天堂久久| 波多野结衣福利| 欧美三级电影一区| 黄色网址在线免费播放| 亚洲永久在线观看| 欧美视频亚洲视频| 在线观看亚洲免费视频| 亚洲18女电影在线观看| 天堂av网在线| 国产精品福利无圣光在线一区| 国产在线播放精品| 漂亮人妻被中出中文字幕| 亚洲国产精品v| 精品人妻伦一区二区三区久久| 亚洲天堂色网站| 国产精品视频首页| 91九色丨porny丨国产jk| www国产成人免费观看视频 深夜成人网| 免费在线黄色网| 精品亚洲国产视频| 伊人久久一区|