Sxw1212

Zombienet Server

Dec 15th, 2013
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.71 KB | None | 0 0
  1. /*jslint node: true */
  2.  
  3. // ZombieNet Communication API
  4.  
  5. function enc64(msg) {
  6.     return new Buffer(msg).toString("base64");
  7. }
  8.  
  9. var uuid = require("node-uuid");
  10.  
  11. var msgqueue = {},
  12.     msgkey = {};
  13.  
  14. var base = require("../server/base")(base);
  15.  
  16. // Obtain session id
  17. base.app.all("/obtain", function (req, res) {
  18.     var key = req.param("key") || uuid(),
  19.         sid = uuid();
  20.    
  21.     msgkey[key] = msgkey[key] || [];
  22.     msgkey[key].push(sid);
  23.     msgqueue[sid] = [];
  24.    
  25.     res.statusCode = 200;
  26.     res.send("success:" + key + ":" + sid);
  27. });
  28.  
  29. // Poll for messages
  30. base.app.all("/poll", function (req, res) {
  31.     if (req.param("sid")) {
  32.         if (msgqueue[req.param("sid")]) {
  33.             var msg = msgqueue[req.param("sid")].shift();
  34.             if (msg) {
  35.                 res.statusCode = 200;
  36.                 res.send("success:" + msg);
  37.             } else {
  38.                 res.statusCode = 412;
  39.                 res.send("fail:nomsg");
  40.             }
  41.         } else {
  42.             res.statusCode = 404;
  43.             res.send("fail:invalid/expired sid");
  44.         }
  45.     } else {
  46.         res.statusCode = 400;
  47.         res.send("fail:query invalid");
  48.     }
  49. });
  50.  
  51. // Send a message
  52. base.app.all("/send", function (req, res) {
  53.     if (req.param("key") && req.param("msg")) {
  54.         if (msgkey[req.param("key")]) {
  55.             msgkey[req.param("key")].forEach(function (v) {
  56.                 msgqueue[v].push(enc64(req.param("msg")));
  57.             });
  58.         }
  59.         res.statusCode = 200;
  60.         res.send("success");
  61.     } else {
  62.         res.statusCode = 400;
  63.         res.send("fail:query invalid");
  64.     }
  65. });
  66.  
  67. // Start server
  68. base.listen(["zn.fluidnode.com", "zn.dev.fluidnode.com"]);
Advertisement
Add Comment
Please, Sign In to add comment