点击链接进行双屏互动体验
服务端:
var Server = require('socket.io'), io = new Server(9090);
var globals = {
totalCount: 0,
links: 0
};
//添加连接监听
io.on('connection', function(socket){
globals.links++;
console.log('links:'+globals.links);
globals.totalCount++;
console.log('online people:'+globals.totalCount);
io.emit('open',{msg:'在线连接数'+globals.totalCount, sid:socket.id});
//连接成功则执行下面的监听
socket.on('mobile',function(msgbody){
//console.log('Received message from mobile!',msgbody);
io.emit('pc', msgbody);
});
socket.on('pc',function(msgbody){
//console.log('Received message from client!',msgbody);
io.emit('mobile', msgbody);
});
//断开连接callback
socket.on('disconnect',function(){
globals.totalCount--;
globals.links--;
//console.log('Server has disconnected');
});
});
PC端部分代码:
var socket = io.connect('ws://112.74.104.16:9090'), uid=new Date().getTime()+Math.floor(Math.random()*100),
moburl='http://m2p.siguoyi.com/control.html', WSREADY=0, qrcodeUrl = '';
socket.on('open', function(msgbody){
//提交客户端标识
if(!WSREADY){
printer.print('与服务器成功建立链接');
printer.print('客户端标识:'+uid);
printer.print('生成二维码链接...');
qrcodeUrl = moburl+'?uid='+uid+'&t='+(new Date()).getTime();
WSREADY=1;
}
});
socket.on('error', function(msgbody){
printer.error('发生错误:'+msgbody.msg);
});
socket.on('disconnect', function(e){
printer.error('与服务器断开连接!');
});
socket.on('pc', function(msgbody){
//得到手机发过来的消息
if(msgbody.uid==uid){
var flashObj=thisMovie("main"), msg = $.trim(msgbody.msg);
//进行处理
switch(msg){
case 'start':
printer.print('收到手机端消息,开始进入动画...');
flashObj.startGame();
break;
case '1':;
case '2':;
case '3':;
case '4':;
case '5':;
case '6':;
case '7':;
case '8':;
case '9':
printer.print('收到手机端消息,动画切换'+msg);
flashObj.changeFruit(msg);
break;
case 'end':
printer.print('收到手机消息,动画结束');
flashObj.showResult();
//setGameStatus(dualApi.token,'end');
break;
case 'draw':
printer.print('收到手机消息,执行模拟抽奖...');
flashObj.goDraw();
//setGameStatus(dualApi.token,'draw');
break;
case 'reset':
printer.print('收到手机消息,重置动画...');
var t = 5;
window.setInterval((function(t){
return function(){
printer.print('倒计时'+t+'S');
t--;
t<0 && reloadPage();
};
})(t), 1000);
break;
default:
if(/^\d+\|\d+$/.test(msg)){
var args = msg.split('|'), sid = args[0], fid = args[1];
printer.print('收到手机消息,确认选择'+msg);
flashObj.selectFruit(sid,fid);
}
}
}
});
function emitToMobile(msg,data){
socket.emit('pc', {uid:uid, msg:msg, data:data});
}
function getQRCodeURL(){
var s=e=new Date().getTime();
while(!WSREADY){
e=new Date().getTime();
if(e-s>10000){alert('请检查网络是否正常!');return {"code":-1,"message":"网络异常!"};}
}
return {"code":1,"message":"message","url":qrcodeUrl};
}
//动画准备完毕,flash过场动画结束后会调用此接口
function gameReady(){
emitToMobile('ready');
//setGameStatus(dualApi.token,'ready');
}
function offLineLottery(){
return {'code':1,'message':'ok','award':0};
}
//向手机端通知抽奖结果
function showDrawResult(obj){
if(obj.code ==1){
emitToMobile('award', obj.award);
}else{
alert(obj.message);
}
}
//关闭抽奖结果弹窗时调用此接口用于刷新页面
function reloadPage(){
emitToMobile('close');
window.location.reload();
}