2017-01-03 10 views
-3

2人(またはそれ以上)のユーザーが現在Angular 2アプリ内で同じデータを表示しているときをどのようにターゲット設定するかを特定しようとしています。私はノードとmongoDBをバックエンドに使用しています。クライアントとサーバー間の通信にはsocket.ioを使用します。基本的には、2人のユーザーが編集可能なデータを同時に表示していることを知る必要があるため、アラートを送信することができます。2人のユーザーがAngular 2 Appの同じコンポーネントにいるときを特定する方法

+0

これは意味をなさない。 2人のユーザーはフロントエンドアプリケーションの2つの完全に別々のコピーを実行しています。いくつかのバックエンドが存在しない限り、彼らは現在どのコンポーネントを使用しているかを知ることができません。 – jonrsharpe

+0

ノードのバックエンドデータベースがあります。これは、2人のユーザーが同じフォームを同時に編集しようとしているかどうかを知る必要があるため、完全な意味があるため、アプリケーションの2つのインスタンスに関係なく、同時にデータベースの値を変更する可能性があります。それが私が確かめようとしていることです。 – Muirik

+0

あなたの*要件*は理にかなっていますが、SPAで何が起こっているのか誤解しているようです。 http://xyproblem.infoを避けるために、より多くのコンテキストを提供することは役に立ちます。彼らが同時にデータベースにデータを送信している場合は、ユーザーがフロントエンドにいる場所を特定するのではなく、チェックしてみてください。それはずっと簡単です。 – jonrsharpe

答えて

2

これにはバックエンドが必要です。 Angular 2アプリは、ユーザーが別のルート(別のコンポーネント)に移動するたびにバックエンドにリクエストを送信する必要があります。

これを行うには、ルーターのイベントを購読することができます。ここでは簡単なコードを紹介しますが、いくつかの調整が必要です。残りの「ルート」オブジェクトのプロパティをチェックアウトし、それに応じて調整します。 (おそらくAppComponentと呼ばれる)あなたのルートコンポーネントの内側に貼り付けます。

constructor(private router:Router) { 
    this.router.events.subscribe((route) => { 
     var routeUrl = route.url; 
     // TODO: send an HTTP request to your backend, telling it the new route that the user is on 
    }); 
} 

この後のあなたの次のステップは次のようになりますので、私は、他のユーザーは、彼らがそうであるように同じルート上にあるかを知るためにのためにあなたの最終目標であると仮定していますこれを何らかの形でクライアントに伝えるために:AJAXポーリングはwebsocketの設定と同様に1つのオプションです。

+0

このプロジェクトではNodeとmongoDBを使用します。クライアントとサーバー間の通信にはsocket.ioを使用します。 – Muirik

+0

フィードバックに感謝します。 – Muirik

関連する問題