阅读背景:

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

来源:互联网 
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');
});
var app = require('express')();
var path = requ



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: