Subversion Repository Public Repository

Nextrek

Diff Revisions 1127 vs 1128 for /socketIO/index.js

Diff revisions: vs.
  @@ -69,7 +69,7 @@
69 69 // create new user
70 70 const buf = crypto.randomBytes(32);
71 71 const uniqID = buf.toString('hex');
72 - user = Chat.createUser(data.name, data.role, uniqID);
72 + user = Chat.createUser(data.name, data.role, uniqID, socket);
73 73
74 74 console.log('user', user);
75 75
  @@ -77,7 +77,7 @@
77 77 socket.join(user.room);
78 78
79 79 // notify user is ready
80 - event = Chat.event(EVENTS.ROOM.CREATED, user);
80 + event = Chat.event(EVENTS.ROOM.CREATED, Chat.getUser(user.room));
81 81 io.to(user.room).emit(event.type, event.data);
82 82
83 83 // join operators room if role is operator
  @@ -99,17 +99,18 @@
99 99 });
100 100
101 101
102 - // join room
102 + // operator joins customer's room
103 103 socket.on(EVENTS.ROOM.JOIN, (data) => {
104 104 if (!user) {
105 105 return
106 106 }
107 107
108 - const ownerRoom = Chat.joinOwnerRoom(data.user, user);
109 - socket.join(ownerRoom);
108 + const hostRoom = Chat.joinRoom(data.user, user);
109 +
110 + socket.join(hostRoom);
110 111
111 112 event = Chat.event(EVENTS.ROOM.JOIN, user);
112 - io.to(ownerRoom).emit(event.type, event.data);
113 + io.to(hostRoom).emit(event.type, event.data);
113 114
114 115 console.log('join room', user.name, event.data);
115 116 });
  @@ -133,16 +134,32 @@
133 134 });
134 135
135 136
137 + // customer forces operator to leave the room
138 + socket.on(EVENTS.ROOM.LEAVE, (data) => {
139 + if (!user) {
140 + return
141 + }
142 +
143 + const hostRoom = Chat.leaveRoom(data.user, user);
144 + socket.join(hostRoom);
145 +
146 + event = Chat.event(EVENTS.ROOM.JOIN, user);
147 + io.to(hostRoom).emit(event.type, event.data);
148 +
149 + console.log('join room', user.name, event.data);
150 + });
151 +
152 +
136 153 socket.on('disconnect', () => {
137 154 console.log('disconnect', user);
138 -
139 - event = Chat.event(EVENTS.CONNECTION.CLOSE);
140 - io.emit(event.type, event.data);
141 155
142 156 if (!user) {
143 157 return
144 158 }
145 159
160 + event = Chat.event(EVENTS.CONNECTION.CLOSE);
161 + io.to(user.room).emit(event.type, event.data);
162 +
146 163 const userRole = user.role;
147 164 Chat.deleteUser(user);
148 165