node.js+;socket.io立即授权

node.js+;socket.io立即授权,node.js,socket.io,Node.js,Socket.io,是否可以在连接套接字后立即运行身份验证? 现在我这样做: io.sockets.on('connection', function (socket) { socket.on('login', function (token) { // this is where I currently authtificate users }); }); 若我在这种情况下并没有错的话,套接字在“连接”时打开并挂起,并且“登录”事件可能永远不会被调用。如果有人想攻击我的服务器,他们可以简

是否可以在连接套接字后立即运行身份验证? 现在我这样做:

io.sockets.on('connection', function (socket) {
    socket.on('login', function (token) {
    // this is where I currently authtificate users
    });
});
若我在这种情况下并没有错的话,套接字在“连接”时打开并挂起,并且“登录”事件可能永远不会被调用。如果有人想攻击我的服务器,他们可以简单地打开数千个套接字连接。我是说,我该如何认证“连接”呢?所以,如果它失败了,我将能够立即关闭插座


谢谢大家!

当客户端尝试连接时,可以运行身份验证。Socket.io有一种机制,可以在客户端尝试连接到服务器时对其进行授权,但是默认情况下,授权被禁用。当套接字尝试连接到服务器时,存在一个
handshake
对象,该对象具有请求查询和请求头等。您可以通过以下方式强制授权:

io.configure(function (){
  io.set('authorization', function (handshakeData, callback) {
  if(handshakeData.query.token == "somevalue"){
    callback(null, true); // this will allow the client to connect
    }else{
    callback(null, false); // this will prevent the client from connecting
    } 
  });
});
在客户端,您可以发送如下查询字符串:

var socket = io.connect("http://yourIP:Port?token=somevalue");

认证是什么意思?