mirror of
https://github.com/KevinMidboe/zoff.git
synced 2025-12-08 20:48:48 +00:00
Trying to move connected users and such from in-memory to db
This commit is contained in:
182
server/server.js
182
server/server.js
@@ -127,7 +127,9 @@ db.on('error',function(err) {
|
|||||||
console.log("\n" + new Date().toString() + "\n Database error: ", err);
|
console.log("\n" + new Date().toString() + "\n Database error: ", err);
|
||||||
});
|
});
|
||||||
|
|
||||||
db.collection("frontpage_lists").update({viewers: {$gt: 0}}, {$set: {"viewers": 0}}, function(err, docs) {});
|
db.collection("connected_users").update({users: {$exists: true}}, {$set: {users: []}}, {multi: true}, function(err, docs){});
|
||||||
|
db.collection("connected_users").update({"_id": "total_users"}, {$set: {total_users: 0}}, {multi: true, upsert: true}, function(err, docs) {});
|
||||||
|
db.collection("frontpage_lists").update({viewers: {$ne: 0}}, {$set: {"viewers": 0}}, {multi: true}, function(err, docs) {});
|
||||||
|
|
||||||
io.on('connection', function(socket){
|
io.on('connection', function(socket){
|
||||||
socket.emit("get_list");
|
socket.emit("get_list");
|
||||||
@@ -162,28 +164,43 @@ io.on('connection', function(socket){
|
|||||||
socket.on('self_ping', function(msg) {
|
socket.on('self_ping', function(msg) {
|
||||||
var channel = msg.channel;
|
var channel = msg.channel;
|
||||||
if(offline) {
|
if(offline) {
|
||||||
offline_users.push(guid);
|
//offline_users.push(guid);
|
||||||
|
db.collection("connected_users").update({"_id": "offline_users"}, {$addToSet: {users: guid}}, function(err, docs){});
|
||||||
} else {
|
} else {
|
||||||
if(lists[channel] == undefined) {
|
db.collection("connected_users").update({"_id": channel}, {$addToSet: {users: guid}}, function(err, docs){
|
||||||
lists[channel] = [];
|
/*
|
||||||
}
|
if(lists[channel] == undefined) {
|
||||||
lists[channel].push(guid);
|
lists[channel] = [];
|
||||||
db.collection("frontpage_lists").update({"_id": channel}, {$inc: {viewers: 1}}, function(){});
|
}
|
||||||
|
lists[channel].push(guid);*/
|
||||||
|
db.collection("frontpage_lists").update({"_id": channel}, {$inc: {viewers: 1}}, function(){});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
tot_view += 1
|
db.collection("connected_users").update({"_id": "total_users"}, {$inc: {total_users: 1}}, function(err, docs){});
|
||||||
|
//tot_view += 1
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('chromecast', function(msg) {
|
socket.on('chromecast', function(msg) {
|
||||||
try {
|
try {
|
||||||
if(typeof(msg) == "object" && msg.hasOwnProperty("guid") && msg.hasOwnProperty("socket_id") && msg.hasOwnProperty("channel")) {
|
if(typeof(msg) == "object" && msg.hasOwnProperty("guid") && msg.hasOwnProperty("socket_id") && msg.hasOwnProperty("channel")) {
|
||||||
if(lists[msg.channel].indexOf(msg.guid) > -1) {
|
db.collection("connected_users").find({"_id": msg.channel}, function(err, connected_users_channel) {
|
||||||
|
if(connected_users_channel.users.indexOf(msg.guid) > -1) {
|
||||||
|
guid = msg.guid;
|
||||||
|
socketid = msg.socket_id;
|
||||||
|
coll = msg.channel;
|
||||||
|
in_list = true;
|
||||||
|
chromecast_object = true;
|
||||||
|
socket.join(coll);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
/*if(lists[msg.channel].indexOf(msg.guid) > -1) {
|
||||||
guid = msg.guid;
|
guid = msg.guid;
|
||||||
socketid = msg.socket_id;
|
socketid = msg.socket_id;
|
||||||
coll = msg.channel;
|
coll = msg.channel;
|
||||||
in_list = true;
|
in_list = true;
|
||||||
chromecast_object = true;
|
chromecast_object = true;
|
||||||
socket.join(coll);
|
socket.join(coll);
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
return;
|
return;
|
||||||
@@ -197,7 +214,9 @@ io.on('connection', function(socket){
|
|||||||
});
|
});
|
||||||
|
|
||||||
socket.on("get_spread", function(){
|
socket.on("get_spread", function(){
|
||||||
socket.emit("spread_listeners", {offline: offline_users.length, total: tot_view, online_users: lists});
|
db.collection("connected_users").find({"_id": "total_users"}, function(err, tot) {
|
||||||
|
socket.emit("spread_listeners", {offline: offline_users.length, total: tot[0].total_users, online_users: lists});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('suggest_thumbnail', function(msg){
|
socket.on('suggest_thumbnail', function(msg){
|
||||||
@@ -253,6 +272,22 @@ io.on('connection', function(socket){
|
|||||||
in_list = false;
|
in_list = false;
|
||||||
offline = true;
|
offline = true;
|
||||||
if(channel != "") coll = channel;
|
if(channel != "") coll = channel;
|
||||||
|
if(coll !== undefined) {
|
||||||
|
db.collection("connected_users").findAndModify({
|
||||||
|
query: {"_id": coll},
|
||||||
|
update: {$pull: {users: guid}},
|
||||||
|
upsert: true,
|
||||||
|
}, function(err, updated) {
|
||||||
|
if(updated.nModified > 0) {
|
||||||
|
io.to(coll).emit("viewers", updated.users);
|
||||||
|
db.collection("connected_users").update({"_id": "total_users"}, {$inc: {total_users: -1}}, function(err, docs){});
|
||||||
|
}
|
||||||
|
remove_from_array(names.names, name);
|
||||||
|
delete names[guid];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
if(coll !== undefined && lists[coll] !== undefined && contains(lists[coll], guid))
|
if(coll !== undefined && lists[coll] !== undefined && contains(lists[coll], guid))
|
||||||
{
|
{
|
||||||
var index = lists[coll].indexOf(guid);
|
var index = lists[coll].indexOf(guid);
|
||||||
@@ -268,17 +303,24 @@ io.on('connection', function(socket){
|
|||||||
remove_from_array(names.names, name);
|
remove_from_array(names.names, name);
|
||||||
delete names[guid];
|
delete names[guid];
|
||||||
|
|
||||||
}
|
}*/
|
||||||
|
|
||||||
remove_from_array(unique_ids, short_id);
|
remove_from_array(unique_ids, short_id);
|
||||||
|
|
||||||
|
db.collection("connected_users").update({"_id": "offline_users"}, {$addToSet: {users: guid}}, function(err, docs) {});
|
||||||
|
db.collection("connected_users").update({"_id": "total_users"}, {$inc: {total_users: 1}}, function(err, docs) {});
|
||||||
|
/*
|
||||||
if(!contains(offline_users, guid) && coll != undefined)
|
if(!contains(offline_users, guid) && coll != undefined)
|
||||||
{
|
{
|
||||||
offline_users.push(guid);
|
offline_users.push(guid);
|
||||||
tot_view += 1;
|
tot_view += 1;
|
||||||
}
|
}*/
|
||||||
} else {
|
} else {
|
||||||
offline = false;
|
offline = false;
|
||||||
if(contains(offline_users, guid))
|
db.collection("connected_users").update({"_id": "offline_users"}, {$pull: {users: guid}}, function(err, docs) {
|
||||||
|
check_inlist(coll, guid, socket, names[guid], offline);
|
||||||
|
});
|
||||||
|
/*if(contains(offline_users, guid))
|
||||||
{
|
{
|
||||||
var index = offline_users.indexOf(guid);
|
var index = offline_users.indexOf(guid);
|
||||||
if(index != -1){
|
if(index != -1){
|
||||||
@@ -287,6 +329,7 @@ io.on('connection', function(socket){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
check_inlist(coll, guid, socket, names[guid], offline);
|
check_inlist(coll, guid, socket, names[guid], offline);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -370,7 +413,9 @@ io.on('connection', function(socket){
|
|||||||
in_list = false;
|
in_list = false;
|
||||||
|
|
||||||
db.collection("frontpage_lists").find({frontpage:true}, function(err, docs){
|
db.collection("frontpage_lists").find({frontpage:true}, function(err, docs){
|
||||||
socket.emit("playlists", {channels: docs, viewers: tot_view});
|
db.collection("connected_users").find({"_id": "total_users"}, function(err, tot){
|
||||||
|
socket.emit("playlists", {channels: docs, viewers: tot[0].total_users});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -423,8 +468,8 @@ io.on('connection', function(socket){
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var pass = decrypt_string(socketid, msg.pass);
|
var pass = decrypt_string(socketid, msg.pass);
|
||||||
db.collection('frontpage_lists').find({"_id": coll}, function(err, docs){
|
db.collection('frontpage_lists').find({"_id": coll}, function(err, frontpage_lists){
|
||||||
if(docs.length == 1)
|
if(frontpage_lists.length == 1)
|
||||||
{
|
{
|
||||||
db.collection(coll).find({views: {$exists: true}}, function(err, docs) {
|
db.collection(coll).find({views: {$exists: true}}, function(err, docs) {
|
||||||
if(docs.length == 0 || (docs.length > 0 && (docs[0].userpass == undefined || docs[0].userpass == "" || docs[0].userpass == pass))) {
|
if(docs.length == 0 || (docs.length > 0 && (docs[0].userpass == undefined || docs[0].userpass == "" || docs[0].userpass == pass))) {
|
||||||
@@ -436,7 +481,8 @@ io.on('connection', function(socket){
|
|||||||
socket.join(short_id);
|
socket.join(short_id);
|
||||||
socket.emit("id", short_id);
|
socket.emit("id", short_id);
|
||||||
check_inlist(coll, guid, socket, name, offline);
|
check_inlist(coll, guid, socket, name, offline);
|
||||||
io.to(coll).emit("viewers", lists[coll] == undefined ? 0 : lists[coll].length);
|
|
||||||
|
io.to(coll).emit("viewers", frontpage_lists.viewers);
|
||||||
|
|
||||||
send_list(coll, socket, true, false, true);
|
send_list(coll, socket, true, false, true);
|
||||||
|
|
||||||
@@ -883,28 +929,30 @@ io.on('connection', function(socket){
|
|||||||
{
|
{
|
||||||
if(!docs[0].skip || (docs[0].adminpass == hash && docs[0].adminpass !== "") || error)
|
if(!docs[0].skip || (docs[0].adminpass == hash && docs[0].adminpass !== "") || error)
|
||||||
{
|
{
|
||||||
if((lists[coll].length/2 <= docs[0].skips.length+1 && !contains(docs[0].skips, guid) && lists[coll].length != 2) ||
|
db.collection("frontpage_lists").find({"_id": coll}, function(err, frontpage_viewers){
|
||||||
(lists[coll].length == 2 && docs[0].skips.length+1 == 2 && !contains(docs[0].skips, guid)) ||
|
if((frontpage_viewers.viewers/2 <= docs[0].skips.length+1 && !contains(docs[0].skips, guid) && frontpage_viewers.viewers != 2) ||
|
||||||
(docs[0].adminpass == hash && docs[0].adminpass !== "" && docs[0].skip))
|
(frontpage_viewers.viewers == 2 && docs[0].skips.length+1 == 2 && !contains(docs[0].skips, guid)) ||
|
||||||
{
|
(docs[0].adminpass == hash && docs[0].adminpass !== "" && docs[0].skip))
|
||||||
//if(!locks[coll] || locks[coll] == undefined){
|
{
|
||||||
locks[coll] = true;
|
//if(!locks[coll] || locks[coll] == undefined){
|
||||||
change_song(coll, error, video_id);
|
locks[coll] = true;
|
||||||
socket.emit("toast", "skip");
|
change_song(coll, error, video_id);
|
||||||
io.to(coll).emit('chat', {from: name, msg: " skipped"});
|
socket.emit("toast", "skip");
|
||||||
//}
|
io.to(coll).emit('chat', {from: name, msg: " skipped"});
|
||||||
}else if(!contains(docs[0].skips, guid)){
|
//}
|
||||||
db.collection(coll).update({views:{$exists:true}}, {$push:{skips:guid}}, function(err, d){
|
}else if(!contains(docs[0].skips, guid)){
|
||||||
if(lists[coll].length == 2)
|
db.collection(coll).update({views:{$exists:true}}, {$push:{skips:guid}}, function(err, d){
|
||||||
to_skip = 1;
|
if(frontpage_viewers.viewers == 2)
|
||||||
else
|
to_skip = 1;
|
||||||
to_skip = (Math.ceil(lists[coll].length/2) - docs[0].skips.length-1);
|
else
|
||||||
socket.emit("toast", to_skip + " more are needed to skip!");
|
to_skip = (Math.ceil(frontpage_viewers.viewers/2) - docs[0].skips.length-1);
|
||||||
socket.broadcast.to(coll).emit('chat', {from: name, msg: " voted to skip"});
|
socket.emit("toast", to_skip + " more are needed to skip!");
|
||||||
});
|
socket.broadcast.to(coll).emit('chat', {from: name, msg: " voted to skip"});
|
||||||
}else{
|
});
|
||||||
socket.emit("toast", "alreadyskip");
|
}else{
|
||||||
}
|
socket.emit("toast", "alreadyskip");
|
||||||
|
}
|
||||||
|
});
|
||||||
}else
|
}else
|
||||||
socket.emit("toast", "noskip");
|
socket.emit("toast", "noskip");
|
||||||
}
|
}
|
||||||
@@ -1100,6 +1148,7 @@ io.on('connection', function(socket){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
left_channel(coll, guid, name, short_id, in_list, socket, true);
|
left_channel(coll, guid, name, short_id, in_list, socket, true);
|
||||||
|
in_list = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('disconnect', function()
|
socket.on('disconnect', function()
|
||||||
@@ -1201,17 +1250,40 @@ function decrypt_string(socket_id, pw){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function send_ping() {
|
function send_ping() {
|
||||||
lists = {};
|
/*lists = {};
|
||||||
offline_users = [];
|
offline_users = [];
|
||||||
tot_view = 0;
|
tot_view = 0;*/
|
||||||
|
db.collection("connected_users").update({users: {$exists: true}}, {$set: {users: []}}, function(err, docs){});
|
||||||
|
db.collection("connected_users").update({"_id": "total_users"}, {$set: {total_users: 0}}, function(err, docs){});
|
||||||
db.collection("frontpage_lists").update({viewers: {$gt: 0}}, {$set: {"viewers": 0}}, function(err, docs) {
|
db.collection("frontpage_lists").update({viewers: {$gt: 0}}, {$set: {"viewers": 0}}, function(err, docs) {
|
||||||
io.emit("self_ping");
|
io.emit("self_ping");
|
||||||
setTimeout(send_ping, 4000);
|
setTimeout(send_ping, 25000);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function left_channel(coll, guid, name, short_id, in_list, socket, change)
|
function left_channel(coll, guid, name, short_id, in_list, socket, change)
|
||||||
{
|
{
|
||||||
|
if(!coll) return;
|
||||||
|
db.collection("connected_users").findAndModify({
|
||||||
|
query: {"_id": coll},
|
||||||
|
update: {$pull: {users: guid}},
|
||||||
|
upsert: true }, function(err, updated, lastErr){
|
||||||
|
if(updated.users.indexOf(guid) > -1) {
|
||||||
|
db.collection("frontpage_lists").update({"_id": coll, viewers: {$gt: 0}}, {$inc: {viewers: -1}}, function(err, doc) {
|
||||||
|
socket.leave(coll);
|
||||||
|
io.to(coll).emit("viewers", updated.users.length);
|
||||||
|
io.to(coll).emit('chat', {from: name, msg: " left"});
|
||||||
|
});
|
||||||
|
db.collection("connected_users").update({"_id": "total_users"}, {$inc: {total_users: -1}}, function(err, updated){});
|
||||||
|
|
||||||
|
if(!change) {
|
||||||
|
remove_from_array(names.names, name);
|
||||||
|
delete names[guid];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
db.collection("connected_users").update({"_id": "offline_users"}, {$pull: {users: guid}}, function(err, updated){});
|
||||||
|
});
|
||||||
|
/*
|
||||||
if(lists[coll] !== undefined && contains(lists[coll], guid))
|
if(lists[coll] !== undefined && contains(lists[coll], guid))
|
||||||
{
|
{
|
||||||
var index = lists[coll].indexOf(guid);
|
var index = lists[coll].indexOf(guid);
|
||||||
@@ -1237,7 +1309,7 @@ function left_channel(coll, guid, name, short_id, in_list, socket, change)
|
|||||||
offline_users.splice(index, 1);
|
offline_users.splice(index, 1);
|
||||||
tot_view -= 1;
|
tot_view -= 1;
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
|
||||||
remove_from_array(unique_ids, short_id);
|
remove_from_array(unique_ids, short_id);
|
||||||
}
|
}
|
||||||
@@ -1315,6 +1387,20 @@ function del(params, socket, socketid) {
|
|||||||
function check_inlist(coll, guid, socket, name, offline)
|
function check_inlist(coll, guid, socket, name, offline)
|
||||||
{
|
{
|
||||||
if(!offline && coll != undefined){
|
if(!offline && coll != undefined){
|
||||||
|
db.collection("connected_users").findAndModify({
|
||||||
|
query: {"_id": coll},
|
||||||
|
update: {$addToSet: {users: guid}},
|
||||||
|
upsert: true,
|
||||||
|
new: true,
|
||||||
|
}, function(err, conn_users) {
|
||||||
|
db.collection("frontpage_lists").update({"_id": coll}, {$inc: {"viewers": 1}}, function(){
|
||||||
|
io.to(coll).emit("viewers", conn_users.users.length);
|
||||||
|
socket.broadcast.to(coll).emit('chat', {from: name, msg: " joined"});
|
||||||
|
|
||||||
|
db.collection("connected_users").update({"_id": "total_users"}, {$inc: {total_users: 1}}, function(err, docs){});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
/*
|
||||||
if(lists[coll] === undefined)
|
if(lists[coll] === undefined)
|
||||||
{
|
{
|
||||||
lists[coll] = [];
|
lists[coll] = [];
|
||||||
@@ -1333,13 +1419,15 @@ function check_inlist(coll, guid, socket, name, offline)
|
|||||||
socket.broadcast.to(coll).emit('chat', {from: name, msg: " joined"});
|
socket.broadcast.to(coll).emit('chat', {from: name, msg: " joined"});
|
||||||
tot_view += 1;
|
tot_view += 1;
|
||||||
});
|
});
|
||||||
}
|
}*/
|
||||||
} else {
|
} else {
|
||||||
if(!contains(offline_users, guid) && coll != undefined)
|
db.collection("connected_users").update({"_id": coll}, {$addToSet: {users: guid}}, function(err, docs){});
|
||||||
|
db.collection("connected_users").update({"_id": "total_users"}, {$inc: {total_users: 1}}, function(err, docs) {});
|
||||||
|
/*if(!contains(offline_users, guid) && coll != undefined)
|
||||||
{
|
{
|
||||||
offline_users.push(guid);
|
offline_users.push(guid);
|
||||||
tot_view += 1;
|
tot_view += 1;
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user