ona*_*nar 9 sockets node.js socket.io socket.io-1.0
我找到了使用socket.IO 1.*width Express 4的例子.这是一个链接
一切都很完美.但是有一个代码:
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'));
}
});
Run Code Online (Sandbox Code Playgroud)
因此,如果有错误,则传递给next.但接下来呢?如何在没有try,catch的情况下处理此错误.我的意思是处理下一个接收的地方,如快递:
// something here
// And this is callback function which accepts next with err
functin(err, anythingHere){
if err
throw err;
else
// some code here
}
Run Code Online (Sandbox Code Playgroud)
lag*_*lex 21
它转到了客户端.
https://socket.io/docs/server-api/#socket-use-fn
传递给中间件回调的错误作为特殊
error数据包发送给客户端.Run Code Online (Sandbox Code Playgroud)io.on('connection', (socket) => { socket.use((packet, next) => { if (packet.doge === true) return next(); next(new Error('Not a doge error')); }); });
请注意,不会调用其后的任何中间件.
在客户端,您可以像这样处理:
socket.on('error', function(err){
// do something with err
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6132 次 |
| 最近记录: |