UNPKG

isock

Version:

Web -> Non-Web connectionusing Socket.io

68 lines (67 loc) 2.07 kB
var express = require("express"); var http = require("http"); var io = require("socket.io"); isock = (function (ops = {}) { if (ops === "secure") { return require("./isocks.js"); } else if (ops === "client") { return require("./isock.client.js"); } ops.port = ops.port || 24681; var app = express(); var _http = http.Server(app); var server = io(_http); var on_connect = (function () { }); var on_disconnect = (function () { }); var on_receive = (function () { }); var listen_on = []; server.on("connection", function (socket) { socket.send = (function (data) { socket.emit("data", { data }); }); on_connect(socket); listen_on.forEach(function (obj, i) { socket.on(obj[0], function (data) { obj[1](socket, data); }); }); listen_on = []; socket.on("data", function (data) { socket.send = (function (data) { socket.emit("data", { data }); }); if (data.nonce !== undefined) { socket.send = (toData => { socket.emit(data.nonce, { data: toData }); }); } on_receive(socket, data.data); }); socket.on("disconnect", function () { on_disconnect(socket); }); }); var start = (function (_port = -1) { if (_port !== -1) { ops.port = _port; } _http.listen(ops.port); console.log("iSock Server online:", ops.port); }); return { start: start, on: (function (name, fun) { listen_on.push([name, fun]); }), on_connect: (function (fun) { on_connect = fun; }), on_receive: (function (fun) { on_receive = fun; }), on_disconnect: (function (fun) { on_disconnect = fun; }) }; }); module.exports = isock;