2017-03-24 20 views
0

私は現在、サインインしているすべてのメンバーのリストを取得しようとしています。これにはsocket.jsを使用しています。 jQueryので、私は以下のやっている、そして、NodeJS - グローバル変数を格納

eventEmitter.on('userSignedIn', function(socket, user) { 
    socket.emit("userJoined", {currentUsers: user.first_name}); 
}); 

私は次のイベントを持っている

socket.on('userJoined', function (message) { 
       newItem = $("<li>Item " + message.currentUsers + "</li>").show(); 
       $('.users-list').prepend(newItem); 
      }); 

これが動作していないとも、正しいユーザー名が表示されない(S) 。

私がしたいのは、イベントuserSignedInが、usersという文字列を、署名されたばかりのユーザーに添付してソケットに送信するときです。しかし、私はこれをグローバルアプリの中にどのように保存することができるのか苦労していますか?

+1

どのグローバルスコープについてお話していますか?あなたのサーバーのものかブラウザのものか? – slebetman

+0

@slebetman現在サインインしているユーザーの数を記録する必要があるため、サーバー上に存在します。基本的に、ユーザーがサインインするたびにインクリメントするオブジェクト – Phorce

答えて

0

ノード内のグローバル変数は、process.envによってアクセスされます。

ノードにグローバル変数として格納する必要がある場合は、dotenvモジュールに移動してインストールしてください(簡単に使用できます)。カウンタを元のグローバルに保存するために使用します。あなたの.envファイルでは、counter=1と言うでしょう。その後、process.env.counterを記述することでコード内のグローバルにアクセスしてインクリメントすることができます。インクリメントすることもできます。

覚えておいてください:処理が停止または停止した場合、カウンタを元に戻すと元の状態1に戻ります。

dotenvモジュールを使用せず、単にコード内でprocess.env変数を作成してアクセスすることができます。ただし、dotenvは非常に柔軟性があり、他の目的に使用したい場合があります。

希望します。

+0

@twig - これはありがたいですが、これを行う効率的な方法? – Phorce

+0

@Phorceサーバ上に単純なキャッシュを作成する方法があります。[node-cache](https://www.npmjs.com/package/node-cache)と言って、あなたのカウンターをそこ。この種の情報を保持するのはかなり簡単で効率的です。 (それは結局のところキャッシュです:) – twg

関連する問題