2013-04-08 36 views
6

クライアントがサーバーにデータを送信するたびに、そのデータを使用できるようにするために、ソケットの一部のデータをサーバー側に保存します。ソケットのデータをSocket.IOに保存する

トークンをソケットに格納することができます。クライアントが最初に接続しているときは、トークンがあればそれを発行するか、ログインページが表示され、ログインデータがサーバーに送信されます。どんなものであれ、私はそのトークンをサーバーに保管したいので、その後のすべての要求でトークンを指定する必要はありません。

その後、私はRedisStoreを使用します。そのため、すべてのデータには、アプリケーションを実行しているすべてのサーバーにアクセスできます。

私の唯一の質問は、クライアントに関連付けられるようにデータをソケットに保存する場所はどこですか? http://socket.io/#how-to-use スクロールの

答えて

8

へ:非同期にデータを設定および取得するためのクライアント

使用socket.setとsocket.get

+0

ありがとうございました!できます! :) –

+3

その方法は、socket.io 1.0では、これ以上の更新はできません。 – dievardump

+1

io.set()およびio.get()メソッドは1.0では非推奨です。ミドルウェアを使用する必要があります。 http://socket.io/docs/migrating-from-0-9/ –

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

    }); 

}); 

を使用したくない、しかし私は、パフォーマンスへの影響を認識していませんよ。

関連する問題