1

最近、Python ソケット、http 要求/応答処理について学んでいます。サーバー プログラミングについてはまだ初心者です。チャット Web サイトの背後にある基本的な考え方について質問があります。

Omegle や Facebook のチャットなどのチャット Web サイトで、2 人の男性がどのように会話するのでしょうか? 自分のコンピューターのソケットは互いに直接接続しますか、それとも... 男 A が Web サーバーにメッセージを送信し、サーバーがこのメッセージを男 B に送信しますか、またはその逆ですか?

最初のシナリオでは、両方のユーザーが互いの IP を取得できますが、2 番目のシナリオでは、サーバーに接続しているため取得できません。

この混乱を解消していただきありがとうございます。私は非常に新しいので、皆さんからの助けに本当に感謝しています!

4

2 に答える 2

0

通常、両方ともサーバーに接続します。

このようにする理由はいくつかあります。たとえば、会話の最後の 10 件のメッセージをユーザーに表示したいとします。誰がこの情報を保存しますか? クライアントは 1 人ですか?両方?複数の PC/デバイスを使用するとどうなりますか? それらの 1 つがオフラインの場合はどうなりますか? サーバーにメッセージを送信する必要があります。これにより、サーバーには会話履歴が保存され、いつでも利用できるようになります。

別の理由として、1 人のユーザーがオフラインであるとします。ユーザーがオフラインの場合、彼に連絡するために何もできません。接続できません。したがって、サーバーにメッセージを送信する必要があり、サーバーはオンラインになるとユーザーに通知します。
そのため、おそらくサーバーへの接続が必要になるでしょう (共通情報の保存、オフライン メッセージの提供、アクティブ ユーザーの追跡など)。

別の理由もあります。2 人のユーザーが直接接続する場合、そのうちの 1 人が (パブリック IP):ポートでリッスンするサーバーを起動し、もう 1 人がその ip:port に対して接続できるようにする必要があります。さて、これは問題です。クライアント -> サーバー モデルを使用する場合は、ルーターや NAT を介在させずにサーバーのポートを簡単に開くことができるため、そのことを心配する必要はありません。

于 2013-07-15T08:08:58.587 に答える
0

ほとんどのチャットはプッシュ通知システムを使用します。チャット内の人々を追跡し、チャットへの新しいメッセージを受信すると、現在参加しているすべての人にプッシュします. これにより、ユーザーが互いに見えないように保護されます。

于 2013-07-15T04:36:56.270 に答える