2013-04-08 12 views
6

Tôi muốn lưu một số dữ liệu trên ổ cắm, phía máy chủ, vì vậy bất cứ khi nào khách hàng phát ra bất kỳ dữ liệu nào đến máy chủ, tôi muốn dữ liệu đó khả dụng!Lưu dữ liệu trên Socket trong Socket.IO

Một trường hợp sử dụng có thể lưu trữ mã thông báo trên ổ cắm. Khi máy khách kết nối lần đầu tiên, nó sẽ phát ra mã thông báo, nếu nó có, hoặc nó sẽ hiển thị trang đăng nhập và sau đó dữ liệu đăng nhập sẽ được gửi đến máy chủ. Cho dù đó là ai, tôi muốn lưu trữ mã thông báo trên máy chủ để mọi yêu cầu sau đó không cần chỉ định mã thông báo.

Sau đó, tôi sẽ sử dụng RedisStore, vì vậy tất cả dữ liệu sẽ có thể truy cập được tất cả các máy chủ đang chạy ứng dụng.

Câu hỏi duy nhất của tôi là, tôi lưu trữ dữ liệu trên ổ cắm để nó được liên kết với khách hàng đó ở đâu?

Trả lời

8

trên http://socket.io/#how-to-use cuộn để: Lưu trữ dữ liệu liên quan đến một khách hàng

socket.set sử dụng và socket.get để thiết lập và nhận dữ liệu không đồng bộ

+0

Cảm ơn rất nhiều! Nó hoạt động! :) –

+3

Phương pháp đó dường như không hoạt động nữa trên socket.io 1.0, bất kỳ cập nhật nào có thể? – dievardump

+1

Các phương thức io.set() và io.get() không được chấp nhận trong phiên bản 1.0. Bạn sẽ phải sử dụng phần mềm trung gian. http://socket.io/docs/migrating-from-0-9/ –

0

Bạn có thể lưu các dữ liệu trên các biến toàn cầu khi bạn không muốn sử dụng bất kỳ cơ sở dữ liệu nào

var globalVariable = {}; 

io.sockets.on("connection", function (socket) { 

    socket.on("save-client-data", function (clientData) { 
      var clientId = clientData.clientId; 
      globalVariable[clientId] = JSON.parse(clientHandshakeData); 
    }); 

    socket.on("get-client-data", function (clientId) { 

      var clientData = globalVariable[clientId]; 
      socket.emit("get-client-data", JSON.stringify(clientData)); 

    }); 

}); 

Điều này làm việc cho kịch bản của tôi, tuy nhiên tôi không biết ý nghĩa hiệu suất.