加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
app.js 4.00 KB
一键复制 编辑 原始数据 按行查看 历史
蓝大叔 提交于 2018-05-23 23:16 . first commit
//导入express
var express = require("express");
var app = express();
//把express转为http
var server = require('http').createServer(app);
//导入socket.io
var io = require('socket.io')(server);
//导入控制层
var userinfo = require("./control/userControl.js");
//导入ejs模块
var ejs = require("ejs");
//导入session 模块
var session = require("express-session");
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true,
}))
//导入createItem.js文件 交给socket处理
var item = require("./control/createItem.js");
//设置ejs模板引擎
app.set("view engine","ejs");
//设置静态资源,默认游戏列表页面
app.use(express.static(__dirname + '/public'));
app.get("/",function(req,res,next){
//判断session里是否已经有 用户存在,如果有就直接渲染index页面
var userinfo = req.session.userinfo;
//res.json(userinfo)
res.render("index",{
userinfo:userinfo||{"name":""}
});
});
//登陆
app.post("/login",userinfo.findUserInfo);
//去往注册
app.get("/register",function(req,res,next){
res.redirect("/register.html");
});
//注册
app.post("/reg",userinfo.addUserInfo);
//去往游戏页面 根据类型去
app.get("/toYX",function(req,res,next){
var userinfo = req.session.userinfo;
if(!userinfo){
res.redirect("/");
}
var type = req.query.type
//res.redirect("/qq.html");
res.render("qq",{
userinfo:userinfo
});
});
//去往游戏页面 根据类型去
app.use(function(req,res,next){
res.redirect("/404.html");
});
/**
* socket-API
* io.emit():向所有人发送消息(包括自己)
* socket.emit("b",AllPerson); 当前链接的人发送消息
* socket.broadcast.emit("d","断开3");//向其他人发送消息
*/
//存放所有人的对象 且时时更新小球
var AllPerson = new Array();
//记录值只生成一次定时器
var isdawen = true;
//socket部分
io.on('connection', function(socket) {
console.log(AllPerson.length);
//第一步客户端告诉服务器他是谁
socket.on('name', function(data) {
//创建新来的小球,并发送给所有人 包括自己
data = {name:"爱你dawen",id:"1"};
var cur = new item.Ballstyle(40,40,20,socket.id,20,null,null,data);
//给自己发送
socket.emit("a",cur);
//给其他人发送
socket.broadcast.emit("e",cur);
//第二步,创建好的球放进数组 一并发送给当前请求的人
socket.emit("b",AllPerson);
AllPerson.push(cur);
});
if(isdawen){
isdawen = false;
//向所有客户端渲染小球
setInterval(function() {
var AllSysBall = [];
for(var i=0;i<40;i++)
{
//id 时间戳
var id = "dawen_woaini"+new Date().getTime()+"_"+i;
var sysb = new item.Ballstyle(10,10,5,id,10,null,null);
AllSysBall.push(sysb);
}
io.emit("c",AllSysBall);
},1000*15);
}
//接下来高级了,控制小球
//第一步 接收控制小球的消息
socket.on("move",function(data){
var id = data.id;
var sty = data.sty;
var cur = null;
for(var i=0;i<AllPerson.length;i++){
var c = AllPerson[i];
if(c.id==id){
cur = c;
cur.top = sty.top;
cur.left = sty.left;
break;
}
}
//发送
socket.broadcast.emit("ee",cur);
});
//吃掉系统小球
socket.on("delSysBall",function(data){
//发送
io.emit("delSysBall",data);
});
//断开事件
socket.on('disconnect', function(data) {
//断开连接删除 当前断开着的球球
//socket.emit("d","断开1");暂时没用
//io.emit("d","断开2");
//socket.broadcast("d","断开2");
//关闭页面时 所调用 向其他人发送
//删除数组
var cur = null;
for(var i=0;i<AllPerson.length;i++){
var c = AllPerson[i];
if(c.id==socket.id){
cur = c;
break;
}
}
AllPerson.splice(AllPerson.indexOf(cur),1);
socket.broadcast.emit("d",socket.id);
});
});
server.listen(3000);//"39.108.185.173"
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化