UNPKG

rkeys

Version:

A platform for creating tablet/HTML5 virtual-keyboard apps to send keystrokes to remote X11

61 lines (60 loc) 1.75 kB
// Generated by LiveScript 1.3.0 (function(){ var Em, _, Ws, wsocks, me; Em = require('events').EventEmitter; _ = require('lodash'); Ws = require('faye-websocket'); module.exports = me = import$(clone$(new Em()), { init: function(httpServers){ var i$, len$, s, results$ = []; wsocks = []; for (i$ = 0, len$ = httpServers.length; i$ < len$; ++i$) { s = httpServers[i$]; if (s) { results$.push(s.on('upgrade', fn$)); } } return results$; function fn$(req, socket, body){ var ws, addr; if (!Ws.isWebSocket(req)) { return; } wsocks.push(ws = new Ws(req, socket, body)); addr = socket.remoteAddress; ws.on('close', function(){ return log0("disconnect " + addr); }); ws.on('message', function(it){ var msg; msg = JSON.parse(it.data); return me.emit(_.keys(msg)[0], { act: _.values(msg)[0], ip: addr }); }); return ws.on('open', function(){ log0("connect " + addr); return me.emit('connect', ws); }); } }, broadcast: function(id, data){ var i$, ref$, len$, ws, ref1$, results$ = []; for (i$ = 0, len$ = (ref$ = wsocks).length; i$ < len$; ++i$) { ws = ref$[i$]; results$.push(ws.send(JSON.stringify((ref1$ = {}, ref1$[id + ""] = data, ref1$)))); } return results$; } }); function import$(obj, src){ var own = {}.hasOwnProperty; for (var key in src) if (own.call(src, key)) obj[key] = src[key]; return obj; } function clone$(it){ function fun(){} fun.prototype = it; return new fun; } }).call(this);