Skip to content

Instantly share code, notes, and snippets.

@tkazec
Created February 18, 2015 16:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tkazec/7270db84433b96d29069 to your computer and use it in GitHub Desktop.
Save tkazec/7270db84433b96d29069 to your computer and use it in GitHub Desktop.
Python <-> Ghost Town example
var ff = require("ff");
var net = require("net");
var town = require("ghost-town")();
if (town.isMaster) {
var port = YOUR_PORT_HERE;
var serv = new net.Server({
allowHalfOpen: true
}).on("connection", function (conn) {
var time = Date.now();
var json = "";
var f = ff(function () {
conn.setEncoding("utf8");
conn.on("error", f.fail);
conn.on("end", f.waitPlain());
conn.on("data", function (txt) {
json += txt;
});
}, function () {
town.queue(JSON.parse(json), f.slot());
}, function (data) {
conn.end(data = new Buffer(data, "base64"));
console.log(
"[" + new Date().toJSON() + "]", "Rendered",
(data.length / 1000).toFixed(2), "kB in",
((Date.now() - time) / 1000).toFixed(2), "seconds."
);
}).onError(function (err) {
conn.end();
console.error("[" + new Date().toJSON() + "]", err.stack);
})
}).on("listening", function () {
console.log("Started on port", port + "!");
}).listen(port);
process.once("SIGTERM", function () {
console.log("Stopping...");
town.stop();
serv.close(process.exit);
setTimeout(process.exit, 2000);
}).on("SIGTERM", function () {});
} else {
town.on("queue", function (page, data, next) {
var headers = {};
var f = ff(function () {
page.set("viewportSize", {
width: data.width,
height: data.height
}, f.waitPlain());
page.set("customHeaders", headers, f.waitPlain());
}, function () {
page.set("onLoadFinished", f.waitPlain());
page.set("content", data.html, f.waitPlain());
}, function () {
page.renderBase64("jpeg", f.slotPlain());
}).onComplete(next);
});
}
import json
import socket
def GhostTown(data):
conn = socket.create_connection(('localhost', YOUR_PORT_HERE,))
conn.sendall(json.dumps(data))
conn.shutdown(socket.SHUT_WR)
return conn.makefile('r').read()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment