一个完整的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'); });
相关文章推荐
- java中的基于套结字(socket)的通信 一. 一个双人单方向通信例子
- 用socket.io实现WebSocket的一个简单例子
- 一个 Java 的 Socket 服务器和客户端通信的例子
- 一个 Java 的 Socket 服务器和客户端通信的例子
- 一个最简单的socket通信的例子
- 一个 Java 的 Socket 服务器和客户端通信的例子
- 关于socket通信的一个例子!
- 用java写的一个利用socket通信的C/S小例子
- 一个 Java 的 Socket 服务器和客户端通信的例子
- 一个 Java 的 Socket 服务器和客户端通信的例子
- .Net下运用Socket和线程池编写的一个Socket通信例子
- Java 的 Socket 服务器和客户端通信的例子 存在一个小问题
- Java IO——Socket:通过多线程实现多客户端与一个服务端通信
- 一个 Java 的 Socket 服务器和客户端通信的例子
- 一个 Java 的 Socket 服务器和客户端通信的例子
- 一个 Java 的 Socket 服务器和客户端通信的例子
- 一个 Java 的 Socket 服务器和客户端通信的例子
- socket.io做成的一个群聊的dome
- 一个 Java 的 Socket 服务器和客户端通信的例子
- Java IO——Socket:通过多线程实现多客户端与一个服务端通信