aboutsummaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorHolden Rohrer <hr@hrhr.dev>2020-01-18 17:26:33 -0500
committerHolden Rohrer <hr@hrhr.dev>2020-01-18 17:26:33 -0500
commit71f281b208e71014fa61c23a943b1b326272556e (patch)
treecb9887d33416208574c96e5126c93e766e82bc6b /utils
parentc2b847bb35c14feb811b5ae07eea7e069a017f3a (diff)
jarvis externalized identify()
Diffstat (limited to 'utils')
-rw-r--r--utils/ident.js29
1 files changed, 29 insertions, 0 deletions
diff --git a/utils/ident.js b/utils/ident.js
new file mode 100644
index 0000000..6d18b88
--- /dev/null
+++ b/utils/ident.js
@@ -0,0 +1,29 @@
+// A portable script to find the sender when the server websocket opens (by cursor movement)
+
+module.exports = function identify(sock, initOnce, init){
+ // `sock` should be Socket instance.
+ // initOnce and init should be functions that act like they describe; initOnce runs once per program execution and init whenever the socket turns back on
+
+ sock.on('open', ()=>{
+ // "Pings" the server with a cursor location which is detected and saved by identity()
+ let coords = [Math.floor(Math.random()*100000+16), Math.floor(Math.random()*1000000+16)];
+ sock.cursor(coords);
+ sock.on('cursor', detect);
+ function detect(pos, send){
+ if (vec.equals(pos[0],coords)){
+ sock.off('cursor', detect);
+ identity(send);
+ }
+ }
+ }
+
+ // Calls initOnce and init on successful identification.
+ let initialized = false;
+ function identity(send){
+ if (! initialized){
+ initialized = true;
+ initOnce();
+ }
+ init(send);
+ }
+}