您的位置:首页 > 其它

一个完整的socket.io通信群聊和单聊的例子

2016-11-07 10:30 309 查看
var app = require('express')();
var path = require('path');
var http = require('http').Server(app);
var io = require('socket.io')(http);
var socketList = {};
//io.set('log level', 1);

app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});

io.sockets.on('connection', function (socket){
console.log('connection........');
socket.on('room', function (nn) {

try {
var roomId = nn.split('|')[0];
var isTeacher = nn.split('|')[1];
var studentId = nn.split('|')[2];
}catch(e){return false;}

socket.join(roomId);

if(socketList[roomId] == undefined) {
socketList[roomId] = {};
socketList[roomId] ['roomnum'] = roomId;
}

if(isTeacher == 'false') {

socketList[roomId] [studentId] = {};
socketList[roomId] [studentId]['socketid'] = socket.id;
socketList[roomId] [studentId]['isonline'] = 'true';
socketList[roomId] [studentId]['locked'] = 'true';
}

io.sockets.in(roomId).emit('request_list_ans',socketList[roomId] );

socket.on('send_message', function (msg){

io.sockets.in(roomId).emit('send_message', msg);
});

socket.on('request_list', function (msg){
var roomId = msg.split('|')[0];

io.to(socket.id).emit('request_list_ans',socketList[roomId] );
});

socket.on('operate_all', function (msg){
console.log(1);
var roomId = msg.split('|')[0];
var lockInfo = msg.split('|')[1];

for(var key in socketList[roomId]){
console.log('key:' + key);
if(key!='roomnum')
socketList[roomId][key]['locked']=''+lockInfo;
}
io.to(socket.id).emit('operate_all_ans','ok' );
io.sockets.in(roomId).emit('send_lockInfo', lockInfo);
});

socket.on('operate_spec', function (msg){

var roomId = msg.split('|')[0];
var studentId = msg.split('|')[1];
var lockInfo = msg.split('|')[2];

if (socketList[roomId] [studentId]) { //当前用户存在在发送锁定信息
console.log(lockInfo);
socketList[roomId] [studentId]['locked'] = lockInfo;
io.to(socket.id).emit('operate_spec_ans','ok' );
io.to(socketList[roomId] [studentId]['socketid'] ).emit('send_lockInfo',lockInfo );
}
});

socket.on('client_status', function (msg){
var roomId = msg.split('|')[0];
var studentId = msg.split('|')[1];
var onlineInfo = msg.split('|')[2];
socketList[roomId] [studentId]['isonline'] = ''+onlineInfo;

io.sockets.in(roomId).emit('request_list_ans',socketList[roomId] );
});

socket.on("disconnect",function(){
delete socketList[roomId] [studentId];
console.log(socketList[roomId]);
io.sockets.in(roomId).emit('request_list_ans','001' );
});

});

});

http.listen(8091, function(){
console.log('listening on *:8091');
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: