You can run PhantomJS perfectly as a web server, because it has a web server module . The examples folder contains, for example, the server.js example . This runs autonomously without any dependencies (without node).
var page = require('webpage').create(), server = require('webserver').create(); var service = server.listen(port, function (request, response) { console.log('Request received at ' + new Date()); // TODO: parse `request` and determine where to go page.open(someUrl, function (status) { if (status !== 'success') { console.log('Unable to post!'); } else { response.statusCode = 200; response.headers = { 'Cache': 'no-cache', 'Content-Type': 'text/plain;charset=utf-8' }; // TODO: do something on the page and generate `result` response.write(result); response.close(); } }); });
If you want to run PhantomJS through node.js, then this is also easily doable using phantomjs-node , which is the PhantomJS bridge for node.
var http = require('http'); var phantom = require('phantom'); phantom.create(function (ph) { ph.createPage(function (page) { http.createServer(function (req, res) {
Notes
You can freely use this, since you do not have multiple requests at the same time. If so, then you need to either synchronize the requests (because there is only one page object), or you need to create a new page object for each request and close() again when you are done.
Artjom B.
source share