| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | /** * socket入口脚本文件 * * @author caiaolin * @date 2017-05-12 * @version */import socket from "socket.io";const socketIO = socket(5500);// socket.io相关操作socketIO.on('connection', function(socket) {    let roomInfo = {};    console.log("new connection");    // 加入房间    socket.on('join', function(data) {        console.log(data);        for(let key in data){            roomInfo[key] = data[key];            socket.join(data[key]);        }    });    // 数据更改通知    socket.on('unitFileChangeNotify', function(data) {        socket.broadcast.to(roomInfo['unitFile']).emit('unitFileChange', data);        if(data.userID) socket.broadcast.to(data.userID).emit('fileDataChange', data);    });    socket.on('feeRateChangeNotify', function(data) {        socket.broadcast.to(roomInfo['feeRate']).emit('feeRateChange', data);        if(data.userID) socket.broadcast.to(data.userID).emit('fileDataChange', data);    });    socket.on('changeNewRoom', function(data) {        if(data.projectID){//如果有项目ID,则通知同一个项目在其它地方被打开的页面            socket.broadcast.to(data.oldRoom).emit('changeFileNotify', data);            if(data.userID) socket.broadcast.to(data.userID).emit('fileDataChange', data);        }        socket.leave(data.oldRoom);        socket.join(data.newRoom);        roomInfo[data.name]=data.newRoom;    });    socket.on('removeProjectMark', function(data) {        if(data.projectID && data.userID){            socket.broadcast.to(data.userID).emit('refreshProjectIcon', data);        }    });    socket.on('multiFileChangeNotify', function(data) {        console.log(data);        let projectID = data.projects[0].projectID;        let userID = data.user_id;        if(projectID && userID){//通知项目管理页面            socket.broadcast.to(userID).emit('fileDataChange', {projectID:projectID});        }        for(let fileID of data.oldFileIDs){//通知已打开的项目页面            let messageTitle = data.from == "feeRateFile"?"feeRateChange":"unitFileChange";            socket.broadcast.to(fileID).emit(messageTitle, data);        }    });    socket.on('disconnect', function () {        console.log("client disconnect =========="+JSON.stringify(roomInfo));    });});
 |