Cleanly closing connection if data is incorrectly framed

Reorganized tests
This commit is contained in:
Guillermo Rauch
2010-08-02 09:50:28 -07:00
parent 522318a60d
commit 757337fac5
3 changed files with 44 additions and 44 deletions

View File

@@ -79,7 +79,7 @@ WebSocket.prototype._handle = function(data){
chunk = chunks[i];
if (chunk[0] !== '\u0000'){
this.listener.options.log('Data incorrectly framed by UA. Dropping connection');
this.connection.destroy();
this.connection.end();
return false;
}
this._onMessage(chunk.slice(1));

View File

@@ -1,52 +1,17 @@
var io = require('./../'),
Listener = io.Listener,
port = 8080;
Client = require('./../lib/socket.io/client'),
WebSocket = require('./support/node-websocket-client/lib/websocket').WebSocket,
empty = new Function,
port = 8080,
create = function(fn){
var server = require('http').createServer(empty), client;
server.listen(port, function(){
client = new WebSocket('ws://localhost:'+ port++ +'/socket.io/websocket', 'borf');
});
return {server: server, client: client, close: function(){
client.close();
server.close();
}};
};
module.exports = {
'test server initialization': function(assert){
var http = create(),
sio = io.listen(http.server);
assert.ok(sio instanceof Listener);
http.close();
},
'test connection and handshake': function(assert){
var server = require('http').createServer(empty),
sio = io.listen(server),
client,
clientCount = 0,
close = function(){
client.close();
server.close();
assert.ok(clientCount, 1);
};
server.listen(port, function(){
client = new WebSocket('ws://localhost:'+ port++ +'/socket.io/websocket', 'borf');
client.onmessage = function(){
console.log('test');
};
});
sio.on('connection', function(client){
console.log('test');
clientCount++;
assert.ok(client instanceof Client);
});
'test server initialization': function(assert){
var server = require('http').createServer(function(){}), sio;
server.listen(8080);
sio = io.listen(server);
assert.ok(sio instanceof Listener);
server.close();
}
};

View File

@@ -0,0 +1,35 @@
var io = require('./../'),
Listener = io.Listener,
Client = require('./../lib/socket.io/client'),
WebSocket = require('./support/node-websocket-client/lib/websocket').WebSocket;
module.exports = {
'test connection and handshake': function(assert){
var server = require('http').createServer(function(){}), sio, client, clientCount, close;
server.listen(8081);
sio = io.listen(server);
client;
clientCount = 0;
close = function(){
client.close();
server.close();
assert.ok(clientCount, 1);
};
server.listen(port, function(){
client = new WebSocket('ws://localhost:8081/socket.io/websocket', 'borf');
client.onmessage = function(){
console.log('test');
};
});
sio.on('connection', function(client){
console.log('test');
clientCount++;
assert.ok(client instanceof Client);
});
}
};