2017-02-06 106 views
0

我在我的服務器的NodeJS以下,以確保foo=bar連接請求的握手:「有效憑據」Socket.IO握手授權

io.use(function(socket, next){ 
    console.log("Query: ", socket.handshake.query); 
    // return the result of next() to accept the connection. 
    if (socket.handshake.query.foo == "bar") { 
     console.log("Got auth params."); 
     socket.emit('chat message','Valid credentials.'); 
     return next(); 
    } 
    // call next() with an Error if you need to reject the connection. 
    console.log("Didn't get auth params."); 
    socket.emit('chat message','Invalid credentials.'); 
    next(new Error('Authentication error')); 
}); 

foo=bar在握手的數據表明chat message已成功發放給客戶。但是,當foo!=bar socket.emit未發出「無效憑證」。聊天消息。

是否有可能向請求連接的客戶端發送消息foo!=bar

我假設向​​客戶端發送消息以響應其連接請求的唯一方法是接受與return next()的連接,在指示無效憑據的connection事件中發送消息,然後終止連接。

回答

0

爲了捕捉通過next(new Error('Authentication error'))發射的錯誤消息簡單地創建一個處理程序error事件在客戶端爲這樣:

socket.on('error', function(err){ 
    console.log('Connection Failed: ' + err); 
});