socket.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. console.log(data);
  17. for(let key in data){
  18. roomInfo[key] = data[key];
  19. socket.join(data[key]);
  20. }
  21. });
  22. // 数据更改通知
  23. socket.on('unitFileChangeNotify', function(data) {
  24. socket.broadcast.to(roomInfo['unitFile']).emit('unitFileChange', data);
  25. if(data.userID) socket.broadcast.to(data.userID).emit('fileDataChange', data);
  26. });
  27. socket.on('feeRateChangeNotify', function(data) {
  28. socket.broadcast.to(roomInfo['feeRate']).emit('feeRateChange', data);
  29. if(data.userID) socket.broadcast.to(data.userID).emit('fileDataChange', data);
  30. });
  31. socket.on('changeNewRoom', function(data) {
  32. if(data.projectID){//如果有项目ID,则通知同一个项目在其它地方被打开的页面
  33. socket.broadcast.to(data.oldRoom).emit('changeFileNotify', data);
  34. if(data.userID) socket.broadcast.to(data.userID).emit('fileDataChange', data);
  35. }
  36. socket.leave(data.oldRoom);
  37. socket.join(data.newRoom);
  38. roomInfo[data.name]=data.newRoom;
  39. });
  40. socket.on('removeProjectMark', function(data) {
  41. if(data.projectID && data.userID){
  42. socket.broadcast.to(data.userID).emit('refreshProjectIcon', data);
  43. }
  44. });
  45. socket.on('multiFileChangeNotify', function(data) {
  46. console.log(data);
  47. let projectID = data.projects[0].projectID;
  48. let userID = data.user_id;
  49. if(projectID && userID){//通知项目管理页面
  50. socket.broadcast.to(userID).emit('fileDataChange', {projectID:projectID});
  51. }
  52. for(let fileID of data.oldFileIDs){//通知已打开的项目页面
  53. let messageTitle = data.from == "feeRateFile"?"feeRateChange":"unitFileChange";
  54. socket.broadcast.to(fileID).emit(messageTitle, data);
  55. }
  56. });
  57. socket.on('disconnect', function () {
  58. console.log("client disconnect =========="+JSON.stringify(roomInfo));
  59. });
  60. });