express.js & socket.ioとチャットをしようとしています。 現在、私のチャットのユーザーは、同じブラウザで複数のタブを開くことができ、これらすべてのタブでチャットできます。これは、同じクライアントが同時にいくつかの人とチャットできることを意味します。私はこの動作を防止したい。socket.ioで同じクライアントを検出する方法
は私がするとき毎回チャットに接続するからクライアントを防ぎたい:
1)クライアントが
2)クライアントが別のブラウザを開いて、同じブラウザで別のタブ上で動作し、それらの上で動作します
どうすればいいですか? ありがとう!
まず、ご協力いただきありがとうございます。あなたが正しいという最初のケースでは、クッキーやセッションは、同じブラウザで複数のタブで作業する同じユーザーを検出するのに十分です。しかし、2番目のケースでは、私は、ユーザー認証をmomemtに提供したくありません。私は、複数のブラウザで動作する同じクライアントを検出できるチャットを見ました。このチャットは、ユーザー認証なしで動作します。私は同じことをしたい。 – Emil
私は私の問題に単一の解決策を見つけたと思う。私たちが 'socket.handshake.address'を使ってクライアントのIPアドレスを取得した場合、同じマシンからソケットを介して接続を開くたびに、このクライアントを検出することができます。 – Emil
@Emil - プロキシとNATとプライベートネットワーク上のユーザーのため、IPアドレスが一人のユーザーに一意に対応するという保証はありません。私の家のルータのNATのため、ウェブサイトは私の家のすべてのユーザー(すべて自分のコンピュータのもの)を同じIPアドレスと見なします。同じことが企業のユーザーにも当てはまります。したがって、IPアドレスだけを使用すると、同じプライベートネットワーク上の他の人があなたのサービスを使用しているため、誤って最初の接続を拒否します。あなたの説明のために – jfriend00