博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
socket.io,远程控制你的幻灯片
阅读量:4486 次
发布时间:2019-06-08

本文共 2149 字,大约阅读时间需要 7 分钟。

   原文: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,当丢包或许一定间隔之后,重新向服务器发送数据。

 

转载于:https://www.cnblogs.com/xiezhengcai/p/3964455.html

你可能感兴趣的文章
软件工程之寻找水王
查看>>
MSMQ 消息队列错误处理
查看>>
Prism for WPF 搭建一个简单的模块化开发框架(五)添加聊天、消息模块
查看>>
在VisualStudio 工具箱中隐藏用户控件
查看>>
C#.NET使用Task,await,async,异步执行控件耗时事件(event),不阻塞UI线程和不跨线程执行UI更新,以及其他方式比较...
查看>>
with(nolock) 与 with(readpast) 与不加此2个的区别
查看>>
零元学Expression Blend 4 - Chapter 11 用实例了解布局容器系列-「Border」
查看>>
Bootstrap<基础十> 响应式实用工具
查看>>
SQL Server :理解GAM和SGAM页
查看>>
恢复SQLServer实例连接
查看>>
Oralce 处理字符串函数
查看>>
Flex4 饼图样式(颜色渐变,点击分离,环形)
查看>>
28个Unix/Linux的命令行神器
查看>>
pb11.5破解补丁
查看>>
struts2下 数据转换器
查看>>
比特信 介绍
查看>>
ubuntu 16.04 Samba 匿名配置
查看>>
document handling
查看>>
Spring的核心容器
查看>>
Spoken English Practice(If you fail to do as I say, I will take you suffer.)
查看>>