Skip to content

Instantly share code, notes, and snippets.

@lpinca
Last active August 29, 2015 14:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lpinca/5baa6638ed43bddcfe10 to your computer and use it in GitHub Desktop.
Save lpinca/5baa6638ed43bddcfe10 to your computer and use it in GitHub Desktop.
Close event not fired
'use strict';
var server = require('http').createServer();
var net = require('net');
function write(port, host) {
this.write([
'GET ws://' + host + ':' + port + '/ HTTP/1.1',
'Host: ' + host,
'Upgrade: websocket',
'Connection: Upgrade',
'Sec-WebSocket-Key: rfeGe1izPRq2JyonWunAQw==',
'Sec-WebSocket-Version: 13',
'Origin: http://' + host +':' + port,
'',
''
].join('\r\n'));
this.end();
server.close();
}
server.on('close', function close() {
console.log('bye');
});
server.on('listening', function listening() {
var socket = new net.Socket();
var bound = server.address();
socket.connect(bound.port, bound.address);
socket.on('connect', write.bind(socket, bound.port, bound.address));
socket.on('data', function () { socket.destroy(); });
});
server.on('upgrade', function upgrade(req, socket, head) {
setTimeout(function send() {
socket.write([
'HTTP/1.1 101 Switching Protocols',
'Upgrade: websocket',
'Connection: Upgrade',
'Sec-WebSocket-Accept: prdBmM6el7NzNgJBcdmWum5mTZc=',
'',
''
].join('\r\n'));
}, 1000);
});
server.listen(0, '127.0.0.1');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment