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 に答える