-2
ノードjsプロジェクトのsocket.ioによるチャットやその他の通知を実装しています。グローバル変数へのユーザソケットマッピングの保存
私たちはユーザ - ソケットマッピングを保つ必要があります。このため
我々はapp.js
global.user_sockets = {};
でグローバル変数を宣言し、新しい接続がトークンauthetication後に作成するときにユーザーID、user_sockets配列のソケットのマッピングを割り当てています。
user_sockets[data.userId]=socket;
グローバル変数を使用するには、多くの推測があります。いくつかのユーザーは、複数のプロセスで使用するとうまくいかないと言います。
これに関する他の解決策はありますか?
Redisのパブリッシュ/サブスクライブをご覧ください。 – Gntem
これについても考えましたが、この実装ではなく、別のインメモリ管理レイヤーを追加すると便利ですか? – jit
ユーザーがログインしてセッションを開始した場合は、socket.idをユーザーセッションIDに関連付けるだけで、パラメータとしてsocket.ioサーバーオブジェクトを渡したり、emitなどを呼び出すことができます。また、レディスはパブリッシュ/サブスクライブを行い、フォーマットされたメッセージを公開し、加入者機能がすべてを処理し、作業全体を最小限に抑えて1つのスクリプトにすることができます。グローバルを使用することに同意する多くの人が最良の選択ではない。多くの/他のオプションを評価して、アプリケーションに最適なものを判断したい場合があります。 – Gntem