sql >> データベース >  >> NoSQL >> Redis

Redis、Node.js、Socket.io:クロスサーバー認証とnode.jsの理解

    わかりました、答えがあります。私はそれを理解するのに苦労し、何時間も探していました...

    これが私がそれを機能させることを可能にした関連トピックです(答えとコメント):

    「メッセージ」リスナーでRedisを削除する方法

    そして、これが私のコードです:

    io.on('connection', function(client){
        console.log('Client id #'+client.id);
    
        if (client.handshake.session) {
          var user_socket_channel = client.handshake.session['user_socket_channel'];
        }
    
        var redis_listener = function(redis_channel, rawdata) {
          console.log('Redis connection on '+redis_channel);
          var data = JSON.parse(rawdata);
          if (data.channel) { var socket_channel = data.channel; }
          else { 
            if (user_socket_channel) { var socket_channel = user_socket_channel; }
            else { var socket_channel = 'public' }
          }
          var rails_data = data.data;
          console.log('Socket.io emiting on ['+socket_channel+']');
          client.emit(socket_channel, rails_data);
        };
    
        redis_subs.on('message', redis_listener);
    
        client.on('disconnect', function(){
          console.log('Client disconnect, removing redis listener..');
          redis_subs.removeListener('message', redis_listener);
        });
    });
    

    コンテキストに応じて、io.client.disconnectイベントでredis.removeListenerを呼び出す必要があります。

    考えられる代替案は次のとおりです:

    https://github.com/LearnBoost/Socket.IO/wiki/Configure-Socket.IO

    ちなみに、この関連する質問は、正確な答えを持つ同様の質問のように見えますが、実際には機能しません(機能しませんでした)。さらに、強調表示されたコメントを見てください:

    socket.ioでredis接続を再利用するにはどうすればよいですか?




    1. ApacheSparkがHBase-SparkモジュールでApacheHBaseに登場

    2. MeteorSubscribeはコレクションのソート順を更新しません

    3. オブジェクトのプロパティをredisに保存する

    4. レール上のrubyを使用した$redisグローバル変数