aboutsummaryrefslogtreecommitdiffstats
path: root/build/server.js
diff options
context:
space:
mode:
authorRblSb <msrblsb@gmail.com>2020-02-22 06:35:57 +0300
committerRblSb <msrblsb@gmail.com>2020-02-22 06:35:57 +0300
commit08d068181045f91f0aa160f9b088a18048b948ec (patch)
treea995230c279a5a1fd849dc5202301d15474bca61 /build/server.js
parent4e0859a0f902e84cfafb38103e0be9f5b81d7abe (diff)
More client buttons
Diffstat (limited to 'build/server.js')
-rw-r--r--build/server.js139
1 files changed, 108 insertions, 31 deletions
diff --git a/build/server.js b/build/server.js
index 14869f0..6c35793 100644
--- a/build/server.js
+++ b/build/server.js
@@ -1,23 +1,39 @@
// Generated by Haxe 4.0.5
(function ($global) { "use strict";
+var $estr = function() { return js_Boot.__string_rec(this,''); },$hxEnums = $hxEnums || {},$_;
function $extend(from, fields) {
var proto = Object.create(from);
for (var name in fields) proto[name] = fields[name];
if( fields.toString !== Object.prototype.toString ) proto.toString = fields.toString;
return proto;
}
-var Client = function(ws,name,isLeader) {
- if(isLeader == null) {
- isLeader = false;
- }
+var ClientGroup = $hxEnums["ClientGroup"] = { __ename__ : true, __constructs__ : ["User","Leader","Admin"]
+ ,User: {_hx_index:0,__enum__:"ClientGroup",toString:$estr}
+ ,Leader: {_hx_index:1,__enum__:"ClientGroup",toString:$estr}
+ ,Admin: {_hx_index:2,__enum__:"ClientGroup",toString:$estr}
+};
+var Client = function(ws,id,name,group) {
this.ws = ws;
+ this.id = id;
this.name = name;
- this.isLeader = isLeader;
+ var i = group;
+ if(group == null) {
+ i = 0;
+ }
+ this.group = i;
};
Client.__name__ = true;
Client.prototype = {
- getData: function() {
- return { name : this.name, isLeader : this.isLeader};
+ setGroupFlag: function(type,flag) {
+ if(flag) {
+ this.group |= 1 << type._hx_index;
+ } else {
+ this.group &= -1 - (1 << type._hx_index);
+ }
+ return flag;
+ }
+ ,getData: function() {
+ return { name : this.name, group : this.group};
}
};
var ClientTools = function() { };
@@ -28,20 +44,20 @@ ClientTools.setLeader = function(clients,name) {
var client = clients[_g];
++_g;
if(client.name == name) {
- client.isLeader = true;
- } else if(client.isLeader) {
- client.isLeader = false;
+ client.setGroupFlag(ClientGroup.Leader,true);
+ } else if((client.group & 2) != 0) {
+ client.setGroupFlag(ClientGroup.Leader,false);
}
}
};
ClientTools.hasLeader = function(clients) {
var _g = 0;
- while(_g < clients.length) if(clients[_g++].isLeader) {
+ while(_g < clients.length) if((clients[_g++].group & 2) != 0) {
return true;
}
return false;
};
-ClientTools.getByName = function(clients,name) {
+ClientTools.getByName = function(clients,name,def) {
var _g = 0;
while(_g < clients.length) {
var client = clients[_g];
@@ -50,7 +66,7 @@ ClientTools.getByName = function(clients,name) {
return client;
}
}
- return null;
+ return def;
};
var EReg = function(r,opt) {
this.r = new RegExp(r,opt.split("u").join(""));
@@ -406,6 +422,34 @@ js_Boot.__string_rec = function(o,s) {
case "function":
return "<function>";
case "object":
+ if(o.__enum__) {
+ var e = $hxEnums[o.__enum__];
+ var n = e.__constructs__[o._hx_index];
+ var con = e[n];
+ if(con.__params__) {
+ s = s + "\t";
+ return n + "(" + ((function($this) {
+ var $r;
+ var _g = [];
+ {
+ var _g1 = 0;
+ var _g2 = con.__params__;
+ while(true) {
+ if(!(_g1 < _g2.length)) {
+ break;
+ }
+ var p = _g2[_g1];
+ _g1 = _g1 + 1;
+ _g.push(js_Boot.__string_rec(o[p],s));
+ }
+ }
+ $r = _g;
+ return $r;
+ }(this))).join(",") + ")";
+ } else {
+ return n;
+ }
+ }
if(((o) instanceof Array)) {
var str = "[";
s += "\t";
@@ -490,7 +534,8 @@ server_HttpServer.serveFiles = function(req,res) {
res.end(tmp1);
} else {
res.statusCode = 500;
- res.end("Error getting the file: " + Std.string(err) + ".");
+ var tmp2 = "Error getting the file: " + Std.string(err) + ".";
+ res.end(tmp2);
}
return;
}
@@ -540,6 +585,7 @@ var server_Main = function(port,wsPort) {
this.messages = [];
this.videoTimer = new server_VideoTimer();
this.videoList = [];
+ this.freeIds = [];
this.clients = [];
this.rootDir = "" + __dirname + "/..";
this.config = this.getUserConfig();
@@ -551,16 +597,16 @@ var server_Main = function(port,wsPort) {
process.on("exit",exit);
process.on("SIGINT",exit);
process.on("uncaughtException",function(log) {
- haxe_Log.trace(log,{ fileName : "src/server/Main.hx", lineNumber : 40, className : "server.Main", methodName : "new"});
+ haxe_Log.trace(log,{ fileName : "src/server/Main.hx", lineNumber : 41, className : "server.Main", methodName : "new"});
return;
});
process.on("unhandledRejection",function(reason,promise) {
- haxe_Log.trace("Unhandled Rejection at:",{ fileName : "src/server/Main.hx", lineNumber : 43, className : "server.Main", methodName : "new", customParams : [reason]});
+ haxe_Log.trace("Unhandled Rejection at:",{ fileName : "src/server/Main.hx", lineNumber : 44, className : "server.Main", methodName : "new", customParams : [reason]});
return;
});
server_Utils.getGlobalIp(function(ip) {
- haxe_Log.trace("Local: http://" + server_Utils.getLocalIp() + ":" + port,{ fileName : "src/server/Main.hx", lineNumber : 48, className : "server.Main", methodName : "new"});
- haxe_Log.trace("Global: http://" + ip + ":" + port,{ fileName : "src/server/Main.hx", lineNumber : 49, className : "server.Main", methodName : "new"});
+ haxe_Log.trace("Local: http://" + server_Utils.getLocalIp() + ":" + port,{ fileName : "src/server/Main.hx", lineNumber : 49, className : "server.Main", methodName : "new"});
+ haxe_Log.trace("Global: http://" + ip + ":" + port,{ fileName : "src/server/Main.hx", lineNumber : 50, className : "server.Main", methodName : "new"});
return;
});
var dir = "" + this.rootDir + "/res";
@@ -589,7 +635,7 @@ server_Main.prototype = {
var field = _g1[_g];
++_g;
if(Reflect.field(config,field) == null) {
- haxe_Log.trace("Warning: config field \"" + field + "\" is unknown",{ fileName : "src/server/Main.hx", lineNumber : 67, className : "server.Main", methodName : "getUserConfig"});
+ haxe_Log.trace("Warning: config field \"" + field + "\" is unknown",{ fileName : "src/server/Main.hx", lineNumber : 68, className : "server.Main", methodName : "getUserConfig"});
}
config[field] = Reflect.field(customConfig,field);
}
@@ -597,9 +643,20 @@ server_Main.prototype = {
}
,onConnect: function(ws,req) {
var _gthis = this;
- haxe_Log.trace("Client connected (" + req.connection.remoteAddress + ")",{ fileName : "src/server/Main.hx", lineNumber : 75, className : "server.Main", methodName : "onConnect"});
- var client = new Client(ws,"Unknown",false);
+ var ip = req.connection.remoteAddress;
+ var id = this.freeIds.length > 0 ? this.freeIds.shift() : this.clients.length;
+ var name = "Guest " + (id + 1);
+ haxe_Log.trace("" + name + " connected (" + ip + ")",{ fileName : "src/server/Main.hx", lineNumber : 78, className : "server.Main", methodName : "onConnect"});
+ var client = new Client(ws,id,name,0);
+ if(req.connection.localAddress == ip) {
+ client.group |= 4;
+ }
this.clients.push(client);
+ if(this.clients.length == 1) {
+ if(this.videoTimer.isPaused()) {
+ this.videoTimer.play();
+ }
+ }
var tmp = this.config;
var tmp1 = this.messages;
var client1 = client.name;
@@ -615,17 +672,33 @@ server_Main.prototype = {
return;
});
ws.on("close",function(err) {
- haxe_Log.trace("Client " + client.name + " disconnected",{ fileName : "src/server/Main.hx", lineNumber : 98, className : "server.Main", methodName : "onConnect"});
+ haxe_Log.trace("Client " + client.name + " disconnected",{ fileName : "src/server/Main.hx", lineNumber : 105, className : "server.Main", methodName : "onConnect"});
+ _gthis.sortedPush(_gthis.freeIds,client.id);
HxOverrides.remove(_gthis.clients,client);
_gthis.sendClientList();
- if(client.isLeader) {
+ if((client.group & 2) != 0) {
if(_gthis.videoTimer.isPaused()) {
_gthis.videoTimer.play();
}
}
+ if(_gthis.clients.length == 0) {
+ _gthis.videoTimer.pause();
+ }
return;
});
}
+ ,sortedPush: function(ids,id) {
+ var _g = 0;
+ var _g1 = ids.length;
+ while(_g < _g1) {
+ var i = _g++;
+ if(id < ids[i]) {
+ ids.splice(i,0,id);
+ return;
+ }
+ }
+ ids.push(id);
+ }
,onMessage: function(client,data) {
switch(data.type) {
case "AddVideo":
@@ -635,6 +708,11 @@ server_Main.prototype = {
this.waitVideoStart = haxe_Timer.delay($bind(this,this.startVideoPlayback),3000);
}
break;
+ case "ClearChat":
+ if((client.group & 4) != 0) {
+ this.broadcast(data);
+ }
+ break;
case "Connected":
break;
case "GetTime":
@@ -662,8 +740,8 @@ server_Main.prototype = {
break;
case "Logout":
var oldName = client.name;
- client.name = "Unknown";
- this.send(client,{ type : data.type, logout : { clientName : oldName, clients : this.clientList()}});
+ client.name = "Guest " + (this.clients.indexOf(client) + 1);
+ this.send(client,{ type : data.type, logout : { oldClientName : oldName, clientName : client.name, clients : this.clientList()}});
this.sendClientList();
break;
case "Message":
@@ -679,7 +757,7 @@ server_Main.prototype = {
var time = "[" + new Date().toTimeString().split(" ")[0] + "] ";
this.messages.push({ text : text, name : client.name, time : time});
if(this.messages.length > this.config.serverChatHistory) {
- this.messages.pop();
+ this.messages.shift();
}
this.broadcast(data);
break;
@@ -687,7 +765,7 @@ server_Main.prototype = {
if(this.videoList.length == 0) {
return;
}
- if(!client.isLeader) {
+ if((client.group & 2) == 0) {
return;
}
this.videoTimer.pause();
@@ -697,7 +775,7 @@ server_Main.prototype = {
if(this.videoList.length == 0) {
return;
}
- if(!client.isLeader) {
+ if((client.group & 2) == 0) {
return;
}
this.videoTimer.play();
@@ -718,7 +796,7 @@ server_Main.prototype = {
break;
case "SetLeader":
ClientTools.setLeader(this.clients,data.setLeader.clientName);
- this.sendClientList();
+ this.broadcast({ type : "SetLeader", setLeader : { clientName : data.setLeader.clientName}});
if(this.videoList.length == 0) {
return;
}
@@ -733,7 +811,7 @@ server_Main.prototype = {
if(this.videoList.length == 0) {
return;
}
- if(!client.isLeader) {
+ if((client.group & 2) == 0) {
return;
}
this.videoTimer.setTime(data.setTime.time);
@@ -886,7 +964,6 @@ sys_FileSystem.exists = function(path) {
}
};
function $getIterator(o) { if( o instanceof Array ) return HxOverrides.iter(o); else return o.iterator(); }
-var $_;
function $bind(o,m) { if( m == null ) return null; if( m.__id__ == null ) m.__id__ = $global.$haxeUID++; var f; if( o.hx__closures__ == null ) o.hx__closures__ = {}; else f = o.hx__closures__[m.__id__]; if( f == null ) { f = m.bind(o); o.hx__closures__[m.__id__] = f; } return f; }
$global.$haxeUID |= 0;
var __map_reserved = {};
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage