-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver_prototype.js
126 lines (102 loc) · 4.11 KB
/
server_prototype.js
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
const server = require('http').createServer()
const io = require('socket.io')(server)
var rooms = [];
io.on('connection', function (socket){
console.log(socket.id + ' connected.');
//io.emit('this', { will: 'be received by everyone'});
socket.on('playlist update', function(room, playlist){
//console.log(playlist);
rooms[room].videos = playlist;
socket.to(room).emit('playlist update', playlist);
});
socket.on('video update', function(room, user, video){
console.log(video);
socket.to(room).emit('video update', video);
});
//socket.on('list room', function (room, fn){
// fn(io.sockets.adapter.rooms[room]);
//});
socket.on('debug room', function(){
//console.log(io.sockets.adapter.rooms[room.roomId]);
console.log(rooms);
});
socket.on('debug room2', function(room, user){
//console.log(io.sockets.adapter.rooms[room.roomId]);
console.log(rooms[room].users[user]);
});
socket.on('latency', function (startTime, cb) {
cb(startTime);
});
/* USER OPERATIONS */
//{userId: , roomId, nickName, permission_level, }
//0:Host, 1:Admin, 2:User
socket.on('create room', function(room, host){
room.users = {};
room.videos = {};
socket.join(room.roomId);
host.userId = socket.id;
host.roomId = room.roomId;
host.permission_level = 0;
room.users[socket.id] = host;
room.host = socket.id;
rooms[room.roomId] = room;
console.log(socket.id + ' created a room: ' + room.roomId);
io.sockets.to(room.roomId).emit('users update', rooms[room.roomId]);
});
//{roomId: '', owner: 'client_id'}
//roomId : { roomId: 12345, users: {{userId:, roomId, nickName, permission_level}, {userId:, roomId, nickName, permission_level}}, host: '2ivNsZLc7uFpdxVoAAAA' }
socket.on('join room', function(room, user){
if(rooms[room.roomId]){
user.permission_level = 2;
user.userId = socket.id;
user.roomId = room.roomId;
rooms[room.roomId].users[socket.id] = user;
socket.join(room.roomId);
console.log(socket.id + ' joined to the room: ' + room.roomId);
io.to(room).emit('user joined', socket.id + ' joined to the room: ' + room);
}else{
console.log('Chanel couldnt find');
}
io.sockets.to(room.roomId).emit('users update', rooms[room.roomId]);
io.to(socket.id).emit('playlist update', rooms[room.roomId].videos);
});
socket.on('change host', function(room, user){
if(rooms[room.roomId].host.id === socket.id){
rooms[room.roomId].users[socket.id] = rooms[room.roomId].host;
rooms[room.roomId].host = user;
console.log(room.roomId + ' host changed. new host' + user.nickName);
}
});
socket.on('leave room', function(room){
socket.leave(room);
console.log(socket.id + ' leaved from the room: ' + room);
io.to(room).emit('user leaved', socket.id + ' leaved from the room: ' + room);
});
socket.on('change nickname', function(room, newNick){
console.log('nickname changed');
rooms[room].users[socket.id].nickName = newNick;
io.sockets.to(room).emit('users update', rooms[room]);
});
socket.on('kick user', function(user){
io.sockets.connected[user].disconnect();
});
socket.on('give admin perm', function(room, user){
if(rooms[room].users[socket.id].permission_level === 0){
if(rooms[room].users[user].permission_level === 2){
rooms[room].users[user].permission_level = 1;
}else{
rooms[room].users[user].permission_level = 2;
}
}
io.sockets.to(room).emit('users update', rooms[room]);
});
socket.on('client list', function(room){
console.log(io.sockets.adapter.rooms[room]);
});
socket.on('disconnect', function(){
console.log(socket.id + ' disconnected');
console.log(io.sockets.adapter);
});
/* USER OPERATIONS */
});
server.listen(3300)