2013-04-08 58 views
6

我想在套接字,服務器端保存一些數據,所以無論客戶端何時發送任何數據到服務器,我都希望這些數據可用!將數據保存在Socket.IO中的套接字上

一個用例可以在套接字上存儲一個令牌。當客戶端第一次連接時,它會發出令牌(如果有),或者它會顯示登錄頁面,然後登錄數據將被髮送到服務器。無論它是哪一個,我都希望將令牌存儲在服務器上,以便之後的每個請求都不需要指定令牌。

稍後,我將使用RedisStore,因此所有數據都可以訪問運行該應用程序的所有服務器。

我唯一的問題是,我在哪裏將數據存儲在套接字上,以便與該客戶端關聯?

回答

8
http://socket.io/#how-to-use 滾動

到:給客戶相關的

使用socket.set和socket.get來設置和獲取數據的異步

+0

非常感謝!有用! :) – 2013-04-08 10:41:31

+3

該方法似乎不再適用於socket.io 1.0,任何可能的更新? – dievardump 2014-06-23 11:05:10

+1

在1.0中不推薦使用io.set()和io.get()方法。你將不得不使用中間件。 http://socket.io/docs/migrating-from-0-9/ – 2014-07-09 13:41:09

0

您可以保存在全局變量的數據存儲數據,當您不想使用任何數據庫

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

    }); 

}); 

這適用於我的方案,但我不知道性能影響。

相關問題