需要在socket.io中向未授权用户发送错误

时间:2013-05-05 13:35:27

标签: node.js socket.io chat

因为标题是obvoius我需要向未经授权的用户发回一些错误消息,我需要知道如何实现这一点,例如我需要将此消息发送给用户

  

你没有任何用户名可以开始聊天

并在用户浏览器中打印它我该怎么做?客户端代码是这样的

//this is the client side code
        var socket = io.connect('http://localhost', { resource: '/chat/app.js' });

        // on connection to server, ask for user's name with an anonymous callback
        socket.on('connect', function(){
            // call the server-side function 'adduser' and send one parameter (value of prompt)
            socket.emit('adduser')
        });

    socket.socket.on('error', function (reason){
      console.log('Unable to connect Socket.IO', reason);
    });

但是我在控制台中获得的原因是

  

无法连接Socket.IO握手错误

如何打印消息,导致用户无法获得授权?

这是服务器端代码

        var io = require('socket.io').listen(80);

        io.configure(function (){
          io.set('authorization', function (handshakeData, callback) {
            // findDatabyip is an async example function
            findDatabyIP(handshakeData.address.address, function (err, data) {
              if (err) return callback(err);

              if (data.authorized) {
                handshakeData.foo = 'bar';
                for(var prop in data) handshakeData[prop] = data[prop];
                callback(null, true);
              } else {
//THIS IS THE MESSAGE *********************************************
                callback('you dont have any username to begin chat', false);
              }
            }) 
          });
        });

1 个答案:

答案 0 :(得分:0)

要将错误发送回用户,您必须修改manager.js上的错误函数(socket.io \ lib \ manager.js;约768行)

function error (err) {
    writeErr(500, 'handshake error');
    self.log.warn('handshake error ' + err);
  };

到这个

function error (err) {
    writeErr(500, /*'handshake error'*/ err);
    self.log.warn('handshake error ' + err);
  };