It merely receives proxied requests, does some stuff to it, then sends it back to the proxy, which returns it to the client.
You just described the majority of the web servers that we web developers deal with. Sure, it's a proxy, but the fact that the machine responding is connected via WebSocket and not a local network doesn't make it any less of a server, in my opinion.
Would that happen to be one of the free http://no.de instances?
Which if I recall correctly come with 128mb ram on their custom solaris servers... I always wondered what kind of load those small configurations using NodeJS while handling something non-trivial could do.
Could you share some traffic/load numbers from getting HN'ed?
Hard to tell right now... I started at Joyent's smallest node.js offering (1GB) and then ramped it up to 8GB when the load hit. The server is crashing a lot, but it's not very easy for me to debug right now.
Let me get back to you once the dust settles, deal?
I put browserver together in my free time over the last week. It's still a bit of a toy, but I think it's useful to explore ideas around extending webhooks all the way to the browser, to simplify our increasingly complicated web architectures.
It's already late here in Tokyo, but I'll be up for a bit if anyone wants to chat/brainstorm about approaches like this (and also to make sure the server stays up).
Hey! I am doing something very similar with PageKite (http://pagekite.net/), although the server does not run in a browser.
I've decided to try to get authors of similar tools together on a mailing list to discuss whether we can agree on a common protocol so our clients/servers (connectors/relays, backends/frontends) can be interoperable. Join us: http://mailman.klaki.net/mailman/listinfo/revprotun
I had this idea, too, the killer application is actually demos and talks, I think. The speaker sets up their browser server, asks the audience to hit a URL, and then demonstrates in real time aspects of the system.
It's also a very neat way to bring WebKit Inspector to bear on server style code. Glad you did it! I presume that you have a wildcard subdomain at the DNS level and then some Node parsing magic to correctly proxy. Why subdomains though? Why not just a tag like browserver.com/29adfija02 ?
Basically a web browser reaches the Node HTTP server and gets assigned a throwaway hostname on the Node server. The browser and the server have a bidirectional connection (probably WebSocket via Socket.io or something). The throwaway hostname can be queried, via an HTTP API, and will, upon request, query the web browser through the bidirectional connection then will relay the results back.
One thing: you should consider building this on jed/dynamo-client[1] instead of jed/dynamo. I refactored the former out of the latter last week, adding exponential back-off retry and the ability to specify custom hosts for better testability. Also, I'll be refactoring jed/dynamo myself in the near future, which will introduce breaking some API changes.
I think it's neat that people can create languages that compile to JavaScript so they can work in an environment that's more their style, but it really irks me when they try to say those languages ARE JavaScript.
This isn't a debate as to whether or not CoffeeScript is better, easier, cleaner, etc. It's a simple A does not equal B statement, and it's starting to remind me of the way my boss says I'm "good at Java".