Moved error handling to onConnect to avoid messing with the http.Server global error handlers

Do special error handling for websocket
This commit is contained in:
Guillermo Rauch
2010-10-04 16:48:54 -03:00
parent af81e0ca52
commit 999eba68dc
3 changed files with 17 additions and 18 deletions

View File

@@ -57,6 +57,18 @@ Client.prototype._onConnect = function(req, res){
this.request = req;
this.response = res;
this.connection = this.request.connection;
// error handling
req.addListener('error',function(err){
req.end && req.end() || req.destroy && req.destroy();
});
res.addListener('error', function(err){
res.end && res.end() || res.destroy && res.destroy();
});
req.connection.addListener('error', function(err){
req.socket && ( req.socket.end && req.socket.end() || req.socket.destroy && req.socket.destroy() );
});
if (this._disconnectTimeout) clearTimeout(this._disconnectTimeout);
};

View File

@@ -45,18 +45,6 @@ Listener = module.exports = function(server, options){
this.server.removeAllListeners('request');
this.server.addListener('request', function(req, res){
req.addListener("error",function(err){
console.log("Socket.io::request req error: " + JSON.stringify(err));
req.end && req.end() || req.destroy && req.destroy();
});
res.addListener("error",function(err){
console.log("Socket.io::request res error: " + JSON.stringify(err));
res.end && res.end() || res.destroy && res.destroy();
});
req.socket.addListener("error",function(err){
console.log("Socket.io::request req.socket error: " + JSON.stringify(err));
req.socket && ( req.socket.end && req.socket.end() || req.socket.destroy && req.socket.destroy() );
});
if (self.check(req, res)) return;
for (var i = 0, len = listeners.length; i < len; i++){
listeners[i].call(this, req, res);
@@ -82,10 +70,6 @@ Listener = module.exports = function(server, options){
}
});
this.server.addListener('error', function(err){
console.log("Socket.io::server global error: " + JSON.stringify(err));
});
for (var i in transports){
if ('init' in transports[i]) transports[i].init(this);
}

View File

@@ -78,8 +78,11 @@ WebSocket.prototype._onConnect = function(req, socket){
self._handle(data);
});
this.connection.addListener('error', function(data){
self._onClose();
req.addListener('error', function(err){
req.end && req.end() || req.destroy && req.destroy();
});
socket.addListener('error', function(data){
socket && (socket.end && socket.end() || socket.destroy && socket.destroy());
});
if (this._proveReception(headers)) this._payload();