tutorial socket rooms example node.js sockets socket.io socket.io-1.0

node.js - rooms - socket.io reconnect



SocketIo.use(function(socket, next))-¿A dónde va después, cómo atraparlo o recibirlo? (1)

Encontré un ejemplo del uso de socket.IO 1. * width Express 4. Aquí hay un enlace

Everyting funciona perfectamente. Pero hay un código:

io.use(function(socket, next) { try { var data = socket.handshake || socket.request; if (! data.headers.cookie) { return next(new Error(''Missing cookie headers'')); } console.log(''cookie header ( %s )'', JSON.stringify(data.headers.cookie)); var cookies = cookie.parse(data.headers.cookie); console.log(''cookies parsed ( %s )'', JSON.stringify(cookies)); if (! cookies[COOKIE_NAME]) { return next(new Error(''Missing cookie '' + COOKIE_NAME)); } var sid = cookieParser.signedCookie(cookies[COOKIE_NAME], COOKIE_SECRET); if (! sid) { return next(new Error(''Cookie signature is not valid'')); } console.log(''session ID ( %s )'', sid); data.sid = sid; sessionStore.get(sid, function(err, session) { if (err) return next(err); if (! session) return next(new Error(''session not found'')); data.session = session; next(); }); } catch (err) { console.error(err.stack); next(new Error(''Internal server error'')); } });

Entonces, si hay un error, pasa al next . ¿Pero a dónde va esto ahora? Cómo manejar este error sin intentar, atrapar. Me refiero a manejar donde está recibiendo el siguiente en forma expresa:

// something here // And this is callback function which accepts next with err functin(err, anythingHere){ if err throw err; else // some code here }


Va al cliente.

http://socket.io/docs/server-api/#namespace#use(fn:function):namespace

var io = require(''socket.io'')(); io.use(function(socket, next){ if (socket.request.headers.cookie) return next(); next(new Error(''Authentication error'')); });

Los errores pasados ​​a las devoluciones de llamada de middleware se envían como paquetes de error especiales a los clientes.

Tenga en cuenta que los middlewares que lo siguen no son invocados.

En el lado del cliente puedes manejarlo así:

socket.on(''error'', function(err){ // do something with err });