使用Node.js+socket.io制作服务端,unity+socket.io for unity 制作客户端 ,验证位置同步Demo

使用Node.js+socket.io制作服务端,unity+socket.io for unity 制作客户端 ,验证位置同步Demo (Javascript代码可使用Webstorm等IDE进行编写)

项目下载地址 http://download.csdn.net/detail/zhangzhaoyuxunlei/9674578
1、服务端实现:
var app = require(‘express’)();
var http = require(‘http’).Server(app);
var io =require(‘socket.io’)(http);

app.get(‘/’,function (req,res) {
res.send(‘Welcome’);
});

var onLineUsers = new Array();
var onLineCount = 0;
//响应客户端连接事件
io.on(‘connection’,function (socket) {
console.log(“Connected”);
//客户端连接之后会发出登录事件,应该在监听每个客户端的登录事件
socket.on(‘login’,function (obj) {
socket.name=obj.name;
if(!contains(onLineUsers,obj.name))
{
onLineUsers[onLineCount]=obj.name;
onLineCount++;
console.log(obj.name+’加入,当前共有玩家’+onLineCount+’人’);
io.emit(‘login’,{onLineUsers:onLineUsers,onLineCount:onLineCount,user:obj});
}
})
//其他客户端断开连接后,本客户端响应
socket.on(‘disconnect’,function () {
if(contains(onLineUsers,socket.name))
{
onLineUsers.remove(socket.name);
onLineCount–;
console.log(socket.name+’退出,当前共有玩家’+onLineCount+’人’);
var obj={username:onLineUsers[socket.name]};
io.emit(‘logout’,{onLineUsers:onLineUsers,onLineCount:onLineCount,user:obj});
}
})
//每个客户端收监听位置旋转信息,信息中包含是哪个客户端的信息
socket.on(‘pos_rot’,function (info) {
io.emit(‘pos_rot’,{pos_rotinfo:info})
})
})

//返回item在数组中索引
Array.prototype.indexOf = function(val) {
for (var i = 0; i < this.length; i++) {
if (this[i] == val) return i;
}
return -1;
};
//数组移除item
Array.prototype.remove = function(val) {
var index = this.indexOf(val);
if (index > -1) {
this.splice(index, 1);
}
};
//数组是否包含item
function contains(arry, obj) {
var i = arry.length;
while (i–) {
if (arry[i] === obj) {
return true;
}
}
return false;
}
//开启监听
http.listen(3001,function () {
console.log(‘Server Start’);
})

客户端实现见项目工程
如何搭建开发环境:http://blog.csdn.net/zhangzhaoyuxunlei/article/details/53183448
项目下载地址: http://download.csdn.net/detail/zhangzhaoyuxunlei/9674578

作者:QQ496575233

发布了14 篇原创文章 · 获赞 4 · 访问量 9136

猜你喜欢

转载自blog.csdn.net/zhangzhaoyuxunlei/article/details/53183485