summaryrefslogtreecommitdiff
path: root/modules/poke/poke.js
diff options
context:
space:
mode:
authortomsmeding <tom.smeding@gmail.com>2016-09-13 11:43:06 +0200
committertomsmeding <tom.smeding@gmail.com>2016-09-13 11:44:11 +0200
commitf00ba92ed2cc1a9c24ad783e83525d1b5a85b857 (patch)
tree4d1c00a47c7f3842bcf3dece83d3c00ed3ae459f /modules/poke/poke.js
Initial
Diffstat (limited to 'modules/poke/poke.js')
-rw-r--r--modules/poke/poke.js47
1 files changed, 47 insertions, 0 deletions
diff --git a/modules/poke/poke.js b/modules/poke/poke.js
new file mode 100644
index 0000000..af0285d
--- /dev/null
+++ b/modules/poke/poke.js
@@ -0,0 +1,47 @@
+var cmn=require("../$common.js"),
+ fs=require("fs"),
+ Naampje=require("naampje").name;
+
+var conns=[];
+
+var uniqid=(function(){
+ var id=0;
+ return function(){return id++;};
+})();
+
+module.exports=function(app,io,moddir){
+ var ioNsp=io.of("/poke");
+ app.get("/poke",function(req,res){
+ res.sendFile(moddir+"/poke.html");
+ });
+ ioNsp.on("connection",function(socket){
+ var id=uniqid();
+ var nick=Naampje();
+ var status="";
+ socket.emit("reset",null);
+ socket.emit("self",{id:id,nick:nick});
+ conns.forEach(function(c){
+ socket.emit("connection add",{id:c.id,nick:c.nick});
+ socket.emit("status",{id:c.id,status:c.status});
+ });
+ ioNsp.emit("connection add",{id:id,nick:nick});
+ conns.push({id:id,nick:nick,status:"",socket:socket});
+ socket.on("disconnect",function(){
+ for(var i=0;i<conns.length;i++)if(conns[i].id==id)break;
+ if(i!=conns.length)conns.splice(i,1);
+ ioNsp.emit("connection remove",id);
+ });
+ socket.on("status",function(newst){
+ status=newst.toString();
+ for(var i=0;i<conns.length;i++)if(conns[i].id==id)break;
+ if(i==conns.length)return; //?
+ conns[i].status=status;
+ ioNsp.emit("status",{id:id,status:status});
+ });
+ socket.on("poke",function(target){
+ for(var i=0;i<conns.length;i++)if(conns[i].id==target)break;
+ if(i==conns.length)return; //hah.
+ conns[i].socket.emit("poke",id);
+ });
+ });
+};