Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Redis, Node.js và Socket.io:Xác thực máy chủ chéo và hiểu node.js

Ok, tôi đã có câu trả lời của mình. Tôi đã rất khó khăn để tìm ra nó, đã tìm kiếm hàng giờ ...

Đây là chủ đề liên quan cho phép tôi làm cho nó hoạt động (trả lời VÀ nhận xét):

Cách xóa Redis trên trình nghe 'tin nhắn'

Và đây là mã của tôi:

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

Tùy thuộc vào ngữ cảnh, bạn cần gọi redis.removeListener trên sự kiện io.client.disconnect.

Đây là một giải pháp thay thế có thể xảy ra:

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

Nhân tiện, câu hỏi liên quan này có vẻ giống một câu hỏi tương tự với câu trả lời chính xác, nhưng không thực sự (không hoạt động). Hơn nữa, hãy xem nhận xét được đánh dấu:

Làm cách nào để sử dụng lại kết nối redis trong socket.io?




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. WRONGTYPE Thao tác chống lại một khóa giữ sai loại giá trị php

  2. Làm cách nào để tìm Id phiên khi sử dụng express / connect và cửa hàng phiên?

  3. Đây có phải là một trường hợp sử dụng tốt cho Redis trên API ServiceStack REST không?

  4. Rails và caching, có dễ dàng chuyển đổi giữa memcache và redis không?

  5. Predis đang đưa ra 'Lỗi khi đọc dòng từ máy chủ'