Nextrek
Diff Revisions
1127
vs
1128
for /socketIO/index.js
|
@@ -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 |
|
|