Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

Redis, Node.js, और Socket.io :क्रॉस सर्वर प्रमाणीकरण और नोड.जेएस समझ

ठीक है, मुझे मेरा जवाब मिल गया है। मुझे इसका पता लगाने में मुश्किल हुई, घंटों से ढूंढ रहा था ...

यहाँ संबंधित विषय है जिसने मुझे इसे काम करने की अनुमति दी (उत्तर और टिप्पणियाँ):

'संदेश' श्रोताओं पर रेडिस को कैसे हटाएं

और ये रहा मेरा कोड:

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/Configuring-Socket.IO

वैसे यह संबंधित प्रश्न एक सटीक उत्तर के समान लगता है, लेकिन वास्तव में नहीं है (काम नहीं किया)। इसके अलावा, हाइलाइट की गई टिप्पणी को देखें:

Socket.io में रेडिस कनेक्शन का पुन:उपयोग कैसे करें?




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. रेडिस INCRBY सीमा के साथ

  2. सेलेरी टास्क को कैसे रोकें या फिर से शुरू करें?

  3. बहुत सारे टाइमर सेट करने या निर्धारित कार्य कतार का उपयोग करने के बीच समाधान की तलाश में

  4. रेडिस:किसी सरणी या सॉर्ट किए गए सेट में किसी तत्व को समाप्त करना संभव है?

  5. क्या रेडिस के लिए एक एम्बेड करने योग्य जावा विकल्प है?