isock
Version:
Web -> Non-Web connectionusing Socket.io
68 lines (67 loc) • 2.07 kB
JavaScript
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;