SocketIo.use(function(socket,next)) – 下一步如何捕获或接收它?

我find了使用socket.IO 1. * width express的例子。4.这是一个链接

Everyting完美的作品。 但有一个代码:

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')); } }); 

所以,如果有错误,它会传递给next 。 但接下来呢? 如何处理这个错误,而不尝试,赶上。 我的意思是处理下一个正在接收的地方:

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

它去了客户端。

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')); }); 

传递给中间件callback的error将作为特殊error包发送给客户端。

请注意,它后面的任何中间件都不会被调用。

在客户端,你可以这样处理:

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