Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*jslint node: true */
- // ZombieNet Communication API
- function enc64(msg) {
- return new Buffer(msg).toString("base64");
- }
- var uuid = require("node-uuid");
- var msgqueue = {},
- msgkey = {};
- var base = require("../server/base")(base);
- // Obtain session id
- base.app.all("/obtain", function (req, res) {
- var key = req.param("key") || uuid(),
- sid = uuid();
- msgkey[key] = msgkey[key] || [];
- msgkey[key].push(sid);
- msgqueue[sid] = [];
- res.statusCode = 200;
- res.send("success:" + key + ":" + sid);
- });
- // Poll for messages
- base.app.all("/poll", function (req, res) {
- if (req.param("sid")) {
- if (msgqueue[req.param("sid")]) {
- var msg = msgqueue[req.param("sid")].shift();
- if (msg) {
- res.statusCode = 200;
- res.send("success:" + msg);
- } else {
- res.statusCode = 412;
- res.send("fail:nomsg");
- }
- } else {
- res.statusCode = 404;
- res.send("fail:invalid/expired sid");
- }
- } else {
- res.statusCode = 400;
- res.send("fail:query invalid");
- }
- });
- // Send a message
- base.app.all("/send", function (req, res) {
- if (req.param("key") && req.param("msg")) {
- if (msgkey[req.param("key")]) {
- msgkey[req.param("key")].forEach(function (v) {
- msgqueue[v].push(enc64(req.param("msg")));
- });
- }
- res.statusCode = 200;
- res.send("success");
- } else {
- res.statusCode = 400;
- res.send("fail:query invalid");
- }
- });
- // Start server
- base.listen(["zn.fluidnode.com", "zn.dev.fluidnode.com"]);
Advertisement
Add Comment
Please, Sign In to add comment