Since this is near the top of the HN page, I'd like to ask a question about node.js: What is it suited for? I read the about section of the node.js homepage, and it says that "Node's goal is to provide an easy way to build scalable network programs." Okay, that sounds cool, and I like Javascript, so I want to see if I can fit it into any projects I'm working on, but then I go on to read: "Almost no function in Node d…
The important word in that sentence is "directly". There are plenty of ways to do I/O in node, but they generally involve event-based callbacks so that they don't block the thread.
A HTTP Proxy Server in 20 Lines of node.js Code
11–20 of 26 posts
Re: A HTTP Proxy Server in 20 Lines of node.js Code
#12Earlier quoted context omitted.
The important word in that sentence is "directly". There are plenty of ways to do I/O in node, but they generally involve event-based callbacks so that they don't block the thread.
Are there any special considerations for keeping the TCP connection open while the thread is waiting for the callback? I'm assuming no, since node.js doesn't seem to exist in order to facilitate long running requests.
Re: A HTTP Proxy Server in 20 Lines of node.js Code
#13Earlier quoted context omitted.
The important word in that sentence is "directly". There are plenty of ways to do I/O in node, but they generally involve event-based callbacks so that they don't block the thread.
Are there any special considerations for keeping the TCP connection open while the thread is waiting for the callback? I'm assuming no, since node.js doesn't seem to exist in order to facilitate long running requests.
Re: A HTTP Proxy Server in 20 Lines of node.js Code
#14Earlier quoted context omitted.
The important word in that sentence is "directly". There are plenty of ways to do I/O in node, but they generally involve event-based callbacks so that they don't block the thread.
Are there any special considerations for keeping the TCP connection open while the thread is waiting for the callback? I'm assuming no, since node.js doesn't seem to exist in order to facilitate long running requests.
Re: A HTTP Proxy Server in 20 Lines of node.js Code
#15Earlier quoted context omitted.
The important word in that sentence is "directly". There are plenty of ways to do I/O in node, but they generally involve event-based callbacks so that they don't block the thread.
Are there any special considerations for keeping the TCP connection open while the thread is waiting for the callback? I'm assuming no, since node.js doesn't seem to exist in order to facilitate long running requests.
Re: A HTTP Proxy Server in 20 Lines of node.js Code
#16This is not a server in 20 lines of code, but server configuration in 20 lines (there is no parsing of the http protocols, but only calls into a lib that implements an http proxy). The examples could be implemented in fewer lines of Apache configuration. I would have been nice with some examples that shows what node.js can do, which can't be done (easily) with Apache.
Re: A HTTP Proxy Server in 20 Lines of node.js Code
#17This is not a server in 20 lines of code, but server configuration in 20 lines (there is no parsing of the http protocols, but only calls into a lib that implements an http proxy). The examples could be implemented in fewer lines of Apache configuration. I would have been nice with some examples that shows what node.js can do, which can't be done (easily) with Apache.
More to the point, what he has is a proxy in 20 lines of code which will let him make, say, a custom load balancing http proxy in 40 lines of code.
Re: A HTTP Proxy Server in 20 Lines of node.js Code
#18For kicks, here's my CoffeeScript/Node.js code I used. I did the benchmark with ab entirely on localhost. Normally that's not ideal, but it was enough to tell that this isn't as fast as I'd like.
Re: A HTTP Proxy Server in 20 Lines of node.js Code
#19I benchmarked this a few weeks ago at around ~300req/s on my recent macbook, which was a little disappointing. For kicks, here's my CoffeeScript/Node.js code I used. I did the benchmark with ab entirely on localhost. Normally that's not ideal, but it was enough to tell that this isn't as fast as I'd like. http://gist.github.com/382372
So your result is probably an order of magnitude off.
Re: A HTTP Proxy Server in 20 Lines of node.js Code
#20I benchmarked this a few weeks ago at around ~300req/s on my recent macbook, which was a little disappointing. For kicks, here's my CoffeeScript/Node.js code I used. I did the benchmark with ab entirely on localhost. Normally that's not ideal, but it was enough to tell that this isn't as fast as I'd like. http://gist.github.com/382372
You need to create a new client for each incoming request. In your code, you are actually queuing up all responses. So your result is probably an order of magnitude off.
Edit: I feel like I tried that, and a couple other variations, and this was the fastest. But it's worth revisiting, and I'll definitely try it again.