socket.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /**
  2. * socket入口脚本文件
  3. *
  4. * @author caiaolin
  5. * @date 2017-05-12
  6. * @version
  7. */
  8. import socket from "socket.io";
  9. const socketIO = socket(3300);
  10. // socket.io相关操作
  11. socketIO.on('connection', function(socket) {
  12. let roomInfo = {};
  13. console.log("new connection");
  14. // 加入房间
  15. socket.on('join', function(data) {
  16. for(let key in data){
  17. roomInfo[key] = data[key];
  18. socket.join(data[key]);
  19. }
  20. });
  21. // 数据更改通知
  22. socket.on('unitFileChangeNotify', function(data) {
  23. socket.broadcast.to(roomInfo['unitFile']).emit('unitFileChange', data);
  24. if(data.userID) socket.broadcast.to(data.userID).emit('fileDataChange', data);
  25. });
  26. socket.on('feeRateChangeNotify', function(data) {
  27. socket.broadcast.to(roomInfo['feeRate']).emit('feeRateChange', data);
  28. if(data.userID) socket.broadcast.to(data.userID).emit('fileDataChange', data);
  29. });
  30. socket.on('changeNewRoom', function(data) {
  31. if(data.projectID){//如果有项目ID,则通知同一个项目在其它地方被打开的页面
  32. socket.broadcast.to(data.oldRoom).emit('changeFileNotify', data);
  33. if(data.userID) socket.broadcast.to(data.userID).emit('fileDataChange', data);
  34. }
  35. socket.leave(data.oldRoom);
  36. socket.join(data.newRoom);
  37. roomInfo[data.name]=data.newRoom;
  38. });
  39. socket.on('removeProjectMark', function(data) {
  40. if(data.projectID && data.userID){
  41. socket.broadcast.to(data.userID).emit('refreshProjectIcon', data);
  42. }
  43. });
  44. socket.on('disconnect', function () {
  45. console.log("client disconnect =========="+JSON.stringify(roomInfo));
  46. });
  47. });