0
0
mirror of https://github.com/nodejs/node.git synced 2024-12-01 16:10:02 +01:00
nodejs/test/mjsunit/test-http-client-race.js
Ryan 316e2833f0 Use flat object instead of array-of-arrays for HTTP headers.
E.G. { "Content-Length": 10, "Content-Type": "text/html" } instead of
[["Content-Length", 10], ["Content-Type", "text/html"]].
The main reason for this change is object-creation efficiency.

This still needs testing and some further changes (like when receiving
multiple header lines with the same field-name, they are concatenated with a
comma but some headers ("Content-Length") should not be concatenated ; the
new header line should replace the old value).

Various thoughts on this subject:
http://groups.google.com/group/nodejs/browse_thread/thread/9a67bb32706d9efc#
http://four.livejournal.com/979640.html
http://mail.gnome.org/archives/libsoup-list/2009-March/msg00015.html
2009-08-23 12:32:49 +02:00

42 lines
1003 B
JavaScript

include("mjsunit.js");
PORT = 8888;
var body1_s = "1111111111111111";
var body2_s = "22222";
var server = node.http.createServer(function (req, res) {
var body = req.uri.path === "/1" ? body1_s : body2_s;
res.sendHeader(200, { "Content-Type": "text/plain"
, "Content-Length": body.length
});
res.sendBody(body);
res.finish();
});
server.listen(PORT);
var client = node.http.createClient(PORT);
var body1 = "";
var body2 = "";
client.get("/1").finish(function (res1) {
res1.setBodyEncoding("utf8");
res1.addListener("body", function (chunk) {
body1 += chunk;
});
res1.addListener("complete", function () {
client.get("/2").finish(function (res2) {
res2.setBodyEncoding("utf8");
res2.addListener("body", function (chunk) { body2 += chunk; });
res2.addListener("complete", function () { server.close(); });
});
});
});
function onExit () {
assertEquals(body1_s, body1);
assertEquals(body2_s, body2);
}