-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwsServer.js
More file actions
53 lines (46 loc) · 1.66 KB
/
Copy pathwsServer.js
File metadata and controls
53 lines (46 loc) · 1.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
var server = require('http').createServer()
, webRTC = require('webrtc.io').listen(server);
function sendToOthers(srcSocket, data) {
var listOfSocketsInRoom = webRTC.rtc.rooms[srcSocket.room];
if(listOfSocketsInRoom) {
listOfSocketsInRoom.forEach(function(socketId) {
if(socketId !== srcSocket.id) {
webRTC.rtc.getSocket(socketId).send(JSON.stringify(data)), function(error) {
if (error) {console.log(error);}
else { console.log('[userInfoUpdate]: sent update to', socketId); }
};
}
});
}
else { console.log('WARNING: room', srcSocket.room, 'not found'); }
}
webRTC.rtc.on('join_room', function(data, socket) {
console.log(data.room);
socket.room = data.room;
//for each registered user, send userInfo to newly connected user
webRTC.rtc.rooms[socket.room].forEach(function(registeredSocketId) {
if(registeredSocketId !== socket.id) {
var registeredSocket = webRTC.rtc.getSocket(registeredSocketId);
socket.send(JSON.stringify({
eventName: 'userInfoUpdate',
data: {
username: registeredSocket.username,
isMicMuted: registeredSocket.isMicMuted,
areSpeakersMuted: registeredSocket.areSpeakersMuted,
socketId: registeredSocket.id
}
}));
}
});
});
webRTC.rtc.on('userInfoUpdate', function(info, socket) {
console.log('[userInfoUpdate]:', info)
socket.username = info.username;
socket.isMicMuted = info.isMicMuted;
socket.areSpeakersMuted = info.areSpeakersMuted;
console.log('[userInfoUpdate]:', socket.id, 'was updated.');
info.socketId = socket.id;
sendToOthers(socket, {eventName: 'userInfoUpdate', data: info});
});
var port = process.env.PORT || 8090;
server.listen(port);