1

由于标题很明显,我需要为未经授权的用户发回一些错误消息,并且我需要知道如何实现这一点,例如我需要将此消息发送给用户

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

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

//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);
              }
            }) 
          });
        });
4

1 回答 1

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);
  };
于 2014-02-07T08:04:15.603 回答