socket.io,远程控制你的幻灯片
原文: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,远程控制你的幻灯片的更多相关文章
- Socket.IO学习之基础入门
原文:http://blog.csdn.net/weichuang_1/article/details/48831957 这里贴出Socket.IO官网 一.Socket.IO的介绍 Socket.I ...
- 在web浏览器上显示室内温度(nodeJs+arduino+socket.io)
上次的nodejs操作arduino入门篇中实现了如何连接arduino.这次我们来实现通过arduino测量室内温度并在浏览器上显示出来. [所需材料] 硬件:LM35温度传感器,arduino u ...
- Node学习笔记(三):基于socket.io web版你画我猜(二)
上一篇基础实现的功能是客户端canvas作图,导出dataURL从而实现图片信息推送,下面具体讲下服务端的配置及客户端的配置同步 首先先画一个流程图,讲下大概思路 <canvas id=&quo ...
- node.js+socket.io配置详解
由于我是在win7的环境下,在这里就以win7系统为例进行讲解了. 首先需要在nodejs官网下载最新版的node.js,下载完毕直接安装即可,安装成功后在cmd命令行中执行node指令,如下结果就说 ...
- 使用Node.js+Socket.IO搭建WebSocket实时应用
Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. W ...
- socket.io简单入门(一.实现简单的图表推送)
引子:随着nodejs蓬勃发展,虽然主要业务系统因为架构健壮性不会选择nodejs座位应用服务器.但是大量的内部系统却可以使用nodejs试水,大量的前端开发人员转入全堆开发也是一个因素. 研究本例主 ...
- websocket与socket.io
什么是Websocket? Websocket是一个独立于http的实时通信协议,最初是在HTML5中被引用进来的,在HTML5规范中作为浏览器与服务器的核心通信技术被嵌入到浏览器中.WebSocke ...
- socket.io安装部署
需要node.js环境 创建package.json npm init 下载相关依赖 npm install --save express@4.10.2npm会在当前目录下载所需要的依赖到node_m ...
- Node.js、Express、Socket.io 入门
前言 周末断断续续的写了第一个socket.io Demo.初次接触socket.io是从其官网看到的,看着get started做了一遍,根据官网的Demo能提供简单的服务端和客户端通讯. 这个De ...
随机推荐
- salesforce 零基础学习(二十一)workflow Q&A
有一篇内容专门写了workflow,后来用到的时候心生疑问,不知道小伙伴有没有和我想法一样的,workflow具体内容原来已经说过,不在过多叙述,只说一下运行条件. 那就是:当满足运行条件时,执行相关 ...
- [html]三列居中自动伸缩的结构
html三列居中自动伸缩的结构 <div style="width:100%;height:80px;border:1px solid #DDD;margin-bottom:10px; ...
- 行集函数:OpenRowSet 和 OpenQuery
在SQL Server中,行集函数是不确定性的,这意味着,每次调用,返回值不总是相同的.返回值是不确定的,这意味着,对于相同的输入值,不保证每次返回的值都是相同的.对行集函数的每次调用,行集函数都是单 ...
- 移动端调试工具DebugGap推荐。
因为现在项目大部分都是在写移动端,但是调试起来实在是不方便,虽然可以用chrome来模拟手机端,但实际上差别还是有点大的,最近找到了一款比较不错的调试工具,这里分享一下了,虽然网上已经有分享过了,但还 ...
- 深入理解CSS溢出overflow
× 目录 [1]定义 [2]属性 [3]失效[4]应用 前面的话 当一个元素固定为某个特定大小,但内容在元素中放不下.此时就可以利用overflow属性来控制这种情况 定义 overflow溢出 值: ...
- web前端学习笔记(CSS固定宽度布局)
一.单列布局: 这是最简单的一种布局方式,之所以给出该示例,还是为了保证本篇博客的完整性. <html xmlns="http://www.w3.org/1999/xhtml" ...
- JAVA 设计模式 享元模式
用途 享元模式 (Flyweight) 运用共享技术有效地支持大量细粒度的对象. 享元模式是一种结构型模式. 结构
- linux专题一之文件归档和压缩(tar、file、zip)
本文主要从以下几个方便来说明文件的归档和压缩,同时比较几种不同压缩方法的压缩比率及特点. 文件归档命令tar,tar.gz源码包的安装管理 创建tar包-解压-查询tar包内容 zip命令的用法 为 ...
- SQL--触发器
- 【原创】Kakfa network包源代码分析
kafka.network包主要为kafka提供网络服务,通常不包含具体的逻辑,都是一些最基本的网络服务组件.其中比较重要的是Receive.Send和Handler.Receive和Send封装了底 ...