原文:http://www.cnblogs.com/xiezhengcai/p/3964455.html

中秋休息了几天,今天又开始捣鼓socket.io了。今天的任务是通过socket.io控制你的Reveal幻灯片

工具&原料:socket.io   nodejs  Reveal.js

Reveal.js 是使用html5和css3实现的通过浏览器播放的幻灯片工具,不熟悉的请go http://lab.hakim.se/reveal-js/

完成今天的任务我们得知道几个方法:

滚动右边的显示页
Reveal.right();
滚动左边的显示页
Reveal.left();
滚动上边的显示页
Reveal.up();
滚动下边的显示页
Reveal.down();
前一页
Reveal.prev();
后一页
Reveal.next();

思路:pc页面与移动设备页面均通过socket连接到node,用户点击移动设备上的 前进后退 按钮, 设备向node发送相应的信息,node通过socket将信息转发给pc页面,页面根据该信息做出幻灯片的切换。

node端核心代码

var Server = require('socket.io');
var io = new Server(5555);
io.on('connection', function (socket) {
socket.emit('msg',{data:'connection'});
socket.on('msg', function (data) {
if(data.directive =="phone"){
if (typeof pcSocket != 'undefined') {
pcSocket.emit(data);
}
}else if(data.directive == "pc"){
pcSocket = socket;
}
});
});

上述代码将pc端的socket保存在pcSocket变量里,如果接收到一个移动设备发来的信息(data.directive == "phone"),则将该信息转发给pcSocket。

pc端的代码

var socket = io("ws://103.31.201.154:5555");
socket.on('msg',function(data){
if(data.data == 'connection') {
socket.emit('msg', {directive:"pc"});
} else {
console.log(data);
Reveal.right();
}
});

当连接上node服务器之后,pc端会给服务器发送一条指令,告诉服务器该连接是pc端的连接,当收到其它信息之后,直接切换幻灯片(可根据收到的信息选择切换的页面),

移动端的代码

var socket = io("ws://103.31.201.154:5555");
socket.on('msg',function(data){
if(data.data = 'connection') {
socket.emit('msg', {directive:"phone"});
$().ready(function(){
$("#top").click(function(){
socket.emit('msg', {directive:"top"});
});
$("#bottom").click(function(){
socket.emit('msg', {directive:"bottom"});
});
$("#left").click(function(){
socket.emit('msg', {directive:"left"});
});
$("#right").click(function(){
socket.emit('msg', {directive:"right"});
});
});
}
});

移动端根据用户点击的按钮,向服务器发送相应的信息,

以上基本实现了移动设备控制幻灯片的播放效果,当然如果要做成产品化,那代码需要规划并考虑别的一些边缘情况。另外有一点,在实际测试中,出现了丢包现象。所以可能需要向服务器发送每一次请求的唯一id,当丢包或许一定间隔之后,重新向服务器发送数据。

socket.io,远程控制你的幻灯片的更多相关文章

  1. Socket.IO学习之基础入门

    原文:http://blog.csdn.net/weichuang_1/article/details/48831957 这里贴出Socket.IO官网 一.Socket.IO的介绍 Socket.I ...

  2. 在web浏览器上显示室内温度(nodeJs+arduino+socket.io)

    上次的nodejs操作arduino入门篇中实现了如何连接arduino.这次我们来实现通过arduino测量室内温度并在浏览器上显示出来. [所需材料] 硬件:LM35温度传感器,arduino u ...

  3. Node学习笔记(三):基于socket.io web版你画我猜(二)

    上一篇基础实现的功能是客户端canvas作图,导出dataURL从而实现图片信息推送,下面具体讲下服务端的配置及客户端的配置同步 首先先画一个流程图,讲下大概思路 <canvas id=&quo ...

  4. node.js+socket.io配置详解

    由于我是在win7的环境下,在这里就以win7系统为例进行讲解了. 首先需要在nodejs官网下载最新版的node.js,下载完毕直接安装即可,安装成功后在cmd命令行中执行node指令,如下结果就说 ...

  5. 使用Node.js+Socket.IO搭建WebSocket实时应用

    Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. W ...

  6. socket.io简单入门(一.实现简单的图表推送)

    引子:随着nodejs蓬勃发展,虽然主要业务系统因为架构健壮性不会选择nodejs座位应用服务器.但是大量的内部系统却可以使用nodejs试水,大量的前端开发人员转入全堆开发也是一个因素. 研究本例主 ...

  7. websocket与socket.io

    什么是Websocket? Websocket是一个独立于http的实时通信协议,最初是在HTML5中被引用进来的,在HTML5规范中作为浏览器与服务器的核心通信技术被嵌入到浏览器中.WebSocke ...

  8. socket.io安装部署

    需要node.js环境 创建package.json npm init 下载相关依赖 npm install --save express@4.10.2npm会在当前目录下载所需要的依赖到node_m ...

  9. Node.js、Express、Socket.io 入门

    前言 周末断断续续的写了第一个socket.io Demo.初次接触socket.io是从其官网看到的,看着get started做了一遍,根据官网的Demo能提供简单的服务端和客户端通讯. 这个De ...

随机推荐

  1. iOS ---Swift学习与复习

    swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ...

  2. sql 循环处理表数据中当前行和上一行中某值相+/-

    曾经,sql中循环处理当前行数据和上一行数据浪费了我不少时间,学会后才发现如此容易,其实学问就是如此,难者不会,会者不难. 以下事例,使用游标循环表#temptable中数据,然后让当前行和上一行中的 ...

  3. ligerUI Tree 实例 代码

    http://www.oschina.net/code/snippet_1762525_47819#68813

  4. WPF自定义控件与样式(14)-轻量MVVM模式实践

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. MVVM是WPF中一个非 ...

  5. MongoDB的学习--索引类型和属性

    索引类型 MongDB的索引分为以下几种类型:单键索引.复合索引.多键索引.地理空间索引.全文本索引和哈希索引 单键索引(Single Field Indexes) 在一个键上创建的索引就是单键索引, ...

  6. Fiddler的学习

    以下内容转自:http://www.cnblogs.com/TankXiao/archive/2012/02/06/2337728.html 仅为查找方便而复制~~ Fiddler是最强大最好用的We ...

  7. 优秀前端开发教程:超炫的 Mobile App 3D 演示

    今天,我们想与您分享一个实验性的3D效果.它涉及到一个3D移动设备和一些移动应用程序截图.点击切换按钮时,我们将让移动设备转动并移动每个画面,使我们能看到一个分层的视图.你可能之前没见过这种应用程序演 ...

  8. Azure Redis Cache (3) 创建和使用P级别的Redis Cache

    <Windows Azure Platform 系列文章目录> 在笔者之前的文档里面已经说明了,Azure Redis Cache分为三个不同的级别: - 基本,Basic,不包含SLA ...

  9. 关于Razor引擎的语法说明

    1.在页面上显示字符串的值, 格式:a*@变量名 但@之前必须有空格,{.}等,使得a*不可以构成变量的字符.

  10. 做一个会PS切图的前端开发

    系列链接 做一个会使用PS的前端开发 做一个会PS切图的前端开发 切图方法分类 PhotoShop从CS版本演变到现在的CC版本,切图功能发生了比较大的变化,我们可以把PhotoShop CS版本时的 ...