1

ローカルの nodejs アプリケーションで socketio 認証機能に直面しています。私のサーバーでは、認証機能は問題なく機能します。私のローカルでは機能していないというだけです。ここにコードがあります

var FeedsMain = global.FeedsMain = {}
, colors = require('./colors')
, conf = FeedsMain.conf = require('./conf').config
, SITE_SECRET = conf.app.secret
, zerorpc = require('zerorpc')
, rpcClient = new zerorpc.Client()
, feeds = require('socket.io').listen(conf.app.port)
, services = require('./lib/services')
, feedsService = services.getFeedsService()
, authService = services.getAuthService()
, profileVisitorsService = services.getProfileVisitorsService()
, searchService = services.getSearchService()
, usersService = services.getUserService()
, temptingEventsDistributionService = services.getTemptingEventsDistributionService()
, likesService = services.getLikesService()
, commentsService = services.getCommentsService()
, emitter = require('./lib/events').eventAPI
, eventAPI = require('./lib/events').eventAPI
, dataStore = require('./lib/events').store
, _ = require('lodash')
, cookie = require('cookie')
, authMap = {}
;

require('./clientResources').add(feeds);

rpcClient.connect('tcp://127.0.0.1:4242');

rpcClient.on('error', function(error) {
    console.error('RPC client error:', error);
});

feeds.set('log level', 1);

feeds.set('authorization', function(handshakeData, accept) {
  console.log('authorization function run');
    if (handshakeData.headers.cookie) {
    handshakeData.cookie = cookie.parse(handshakeData.headers.cookie);
    var dg_01 = handshakeData.cookie['dg_01']
    ;
    if(dg_01) {
      rpcClient.invoke('getUser', dg_01, function(err, user) {
        if(err) {
          return accept('Unauthorized', false);
        }
        handshakeData.userId = user._id;
        handshakeData.user = user;
        handshakeData.sessionId = dg_01;
        setSessionId(user._id, dg_01);
        return accept(null, true);
      });
    }
    else {
      console.log('Invalid session id: %s'.red, dg_01);
      return accept('Invalid Session!', false);
    }
  } else {
    return accept('No cookie transmitted.', false);
  }
});
console.log('authorization method over');

お気づきのとおり、すべての変数が正常に初期化されています。基本的にソケット io の初期化であるフィード変数は、ポート 4000 で開始します。localhost:4000 を実行すると、socket.io にようこそ。

ただし、認証機能は実行されません。console.log('authorization function started') を挿入しようとしましたが、起こりません。ただし、コンソールに認証方法が表示されます。これは、認証機能が完全にスキップされたことを意味します。

私のサーバーでは、認証機能から発信されたセッションセットなどのメッセージが表示される場合、すべて正常に機能します。私のローカルでは、うまくいかないようです。

何が起こるかは、誰にでもわかります。

4

0 に答える 0