isock
Version:
Web -> Non-Web connectionusing Socket.io
73 lines • 2.22 kB
JavaScript
if (module !== undefined) { io = require("socket.io-client"); }
isock = (function (ops) {
ops = ops || {};
ops.server = ops.server || "localhost";
ops.port = ops.port || 24681;
var socket = null;
var online = false;
var start = (function () {
socket = io("http://" + ops.server + ":" + ops.port);
socket.on("connect", function () {
online = true;
on_connect(socket);
});
socket.on("data", function (data) {
on_receive(data.data);
});
socket.on("disconnect", function () {
online = false;
on_disconnect(socket);
});
console.log("iSock client ready");
});
var send = (function (data) {
if (!online) { return false; }
socket.emit("data", { data });
return true;
});
var rsend = (function (data, reply) {
if (!online) { return false; }
var nonce = (function () {
var time = new Date().getTime();
var random = Math.random();
var mix = time * random;
return Math.round(mix);
})();
socket.emit("data", { data, nonce });
socket.on(nonce, function (data) {
reply(data.data);
});
});
var on_connect = (function () { });
var on_receive = (function () { });
var on_disconnect = (function () { });
return {
start: start,
on: (function (name, fun) {
if (!online) {
return;
}
socket.on(name, fun);
}),
on_connect: (function (fun) {
on_connect = fun;
}),
on_receive: (function (fun) {
on_receive = fun;
}),
on_disconnect: (function (fun) {
on_disconnect = fun;
}),
emit: (function (name, data) {
if (!online) { return; }
socket.emit(name, data);
}),
send: send,
rsend: rsend,
close: (function () {
socket.close();
})
};
});
isock_client = isock;
if (module !== undefined) { module.exports = isock; }