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

Cách xử lý các cặp người dùng và ổ cắm với node.js + redis

Một giải pháp thanh lịch hơn sẽ là làm cho mỗi ổ cắm kết nối với userID kênh, ví dụ:

io.sockets.on('connection', function (socket) {
  socket.join(userID);
});

// when you want somebody to send a message to userID you can do:
io.sockets.in(userID).emit(message);

Có hai điều bạn cần quan tâm ở đây:

  1. Đảm bảo rằng chỉ userID mới có thể kết nối với kênh của anh ấy, do đó xác minh phiên (đọc thêm tại đây:http://www.danielbaulig.de/socket-ioexpress/)
  2. Khi kết nối, tăng giá trị cho userID trong redis (để bạn biết một kết nối mới cho người dùng đó đang nghe) và khi ngắt kết nối, giảm giá trị userID (để bạn biết số lượng kết nối vẫn đang nghe). Nếu giá trị là 0 thì bạn sẽ gửi một thông báo tới cuộc trò chuyện cho biết rằng userID đã rời khỏi (vì số lượng kết nối đang nghe kênh userID là 0).

Khi người dùng khác muốn gửi tin nhắn tới userID, họ không cần kết nối với kênh userID, họ có thể gửi tin nhắn đến chat kênh và chuyển userID làm thuộc tính. Ví dụ:

var chat = io
  .of('/chat')
  .on('connection', function (socket) {
    // connected to public chat
  })
  .on('message', function (data) {
    if (data.userID && data.message) {
      io.sockets.in(userID).emit('UserX: ' + data.message);
    }
  });



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Muốn sử dụng Redis làm kho thống kê sự kiện

  2. DisabledBackend:Hành vi bất thường với Celery, Redis &Flask

  3. Redis có thể ghi ra cơ sở dữ liệu như PostgreSQL không?

  4. Khóa ioredis với Mẫu phù hợp

  5. Sử dụng Redis cho hàng đợi cho nhiều ứng dụng Laravel trên một máy chủ duy nhất