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

làm cách nào để các phiên hoạt động bằng redis, express &socket.io?

bên trong io.configure , bạn phải liên kết socket với phiên http.

Đây là một đoạn mã trích xuất cookie (Đây là sử dụng socket.io với xhr-polling , Tôi không biết liệu điều này có hoạt động với websocket hay không, mặc dù tôi nghi ngờ nó có hoạt động).

var cookie = require('cookie');
var connect = require('connect');

var sessionStore = new RedisStore({
  client: redis // the redis client
});

socketio.set('authorization', function(data, cb) {
  if (data.headers.cookie) {
    var sessionCookie = cookie.parse(data.headers.cookie);
    var sessionID = connect.utils.parseSignedCookie(sessionCookie['connect.sid'], secret);
    sessionStore.get(sessionID, function(err, session) {
      if (err || !session) {
        cb('Error', false);
      } else {
        data.session = session;
        data.sessionID = sessionID;
        cb(null, true);
      }
    });
  } else {
    cb('No cookie', false);
  }
});

Sau đó, bạn có thể truy cập phiên bằng cách sử dụng:

socket.on("selector", function(data, reply) {
  var session = this.handshake.session;
  ...
}

Điều này cũng có lợi ích bổ sung là nó kiểm tra xem có một phiên hợp lệ hay không, vì vậy chỉ những người dùng đã đăng nhập của bạn mới có thể sử dụng socket. Tuy nhiên, bạn có thể sử dụng một logic khác.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Phơi sáng Redis với Bộ điều khiển Ingress Nginx

  2. Redis vấn đề chèn nhiều

  3. Azure VM không kết nối với Azure Redis Cache nhưng cục bộ đang kết nối với Azure Redis Cache

  4. Kết nối lại với 127.0.0.1:6379 không thành công - kết nối ECONNREFUSED

  5. Tại sao một tệp Redis dump.rdb 500MB lại chiếm khoảng 5,0 GB bộ nhớ?