So, the above runs when a call comes in for data. On the PhantomJS side we have this… ./phantom/phantom_job.js which runs in the Phantom context. Since you can’t share objects directly, all communication is done with events.

There is a lot of room for iteration here — for starters, you may have noticed the 2 second bootstrap time for Phantom. In general though, there is a lot of activity in this server-side DOM rendering space. I think SleepyHollow is a novel approach worth looking at for those of us working on the Node-PhantomJS problem.