mirror of https://github.com/lukechilds/node.git
Fedor Indutny
14 years ago
committed by
Ryan Dahl
2 changed files with 70 additions and 2 deletions
@ -0,0 +1,64 @@ |
|||||
|
var common = require("../common"); |
||||
|
var assert = common.assert |
||||
|
var http = require('http'), |
||||
|
CRLF = '\r\n'; |
||||
|
|
||||
|
var server = http.createServer(); |
||||
|
server.on('upgrade', function(req, socket, head) { |
||||
|
socket.write('HTTP/1.1 101 Ok' + CRLF + |
||||
|
'Connection: Upgrade' + CRLF + |
||||
|
'Upgrade: Test' + CRLF + CRLF + 'head'); |
||||
|
socket.on('end', function () { |
||||
|
socket.end(); |
||||
|
}); |
||||
|
}); |
||||
|
server.listen(8000); |
||||
|
|
||||
|
var client = http.createClient(8000); |
||||
|
|
||||
|
function upgradeRequest(fn) { |
||||
|
var request = client.request('GET', '/', { |
||||
|
'Connection': 'Upgrade', |
||||
|
'Upgrade': 'Test' |
||||
|
}); |
||||
|
|
||||
|
var wasUpgrade = false; |
||||
|
|
||||
|
function onUpgrade(res, socket, head) { |
||||
|
wasUpgrade = true; |
||||
|
|
||||
|
client.removeListener('upgrade', onUpgrade); |
||||
|
socket.end(); |
||||
|
} |
||||
|
client.on('upgrade', onUpgrade); |
||||
|
|
||||
|
function onEnd() { |
||||
|
client.removeListener('end', onEnd); |
||||
|
if (!wasUpgrade) { |
||||
|
throw new Error('hasn\'t received upgrade event'); |
||||
|
} else { |
||||
|
fn && process.nextTick(fn); |
||||
|
} |
||||
|
} |
||||
|
client.on('end', onEnd); |
||||
|
|
||||
|
request.write('head'); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
successCount = 0; |
||||
|
upgradeRequest(function() { |
||||
|
successCount++; |
||||
|
upgradeRequest(function() { |
||||
|
successCount++; |
||||
|
// Test pass
|
||||
|
console.log('Pass!'); |
||||
|
client.end(); |
||||
|
client.destroy(); |
||||
|
server.close(); |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
process.on('exit', function () { |
||||
|
assert.equal(2, successCount); |
||||
|
}); |
Loading…
Reference in new issue