0

socket.io で google/facebook チャット クローンを作成しようとしています。

ユーザーがサーバーに接続すると、ユーザー ID にちなんで名付けられたルームにユーザーを配置します (したがって、ユーザーが複数のタブを開いている場合、すべてが同じルームに移動し、すべてのタブでメッセージを受信します)。AがBにメッセージを送信すると、Bにちなんで名付けられた部屋にブロードキャストします。UIには、送信者のIDを持つ各チャットウィンドウがあるため、ユーザーがメッセージを受信すると、送信者のIDを持つウィンドウを見つけて、新しいウィンドウを更新しますメッセージ。単純。

ここで、A と B が C と D をグループ チャットに招待します。そのため、チャットはグループ チャットに変わります。私はここで立ち往生しています。そのようなシナリオをどのように処理しますか? クライアント UI とサーバーでチャットを追跡するにはどうすればよいですか?

4

1 に答える 1

0

任意の値 (id など) で並べ替えられたチャット内のユーザーの連結 (区切り文字を使用) として、常にグループに名前を付けることができます。したがって、ID USERA を持つユーザー A と ID USERB を持つユーザー B がいる場合、それらを含むルームは USERA-USERB になります。(このスキーマは、ユーザー ID にダッシュが含まれていない場合にのみ機能することに注意してください)。ユーザー C がチャットに参加したら、ID USERA-USERB-USERC のルームを開き、すべてのユーザーをルームに追加し、前の会話からのメッセージをユーザーに再ブロードキャストします。

これにより、UserA と UserB の新しい会話が開始されることに注意してください。これは望ましくない場合があります。この場合、ルーム ID を変更するためにルームをシャッフルする方法を見つける必要があり (これについて考える必要があります)、最後の x メッセージを新しいユーザーに再ブロードキャストする必要があります。

別の注意点として、クライアントに送信されるすべてのイベントに関連するルーム ID を送信して、イベントがどのチャットに関連しているかをクライアントが認識できるようにする必要があります。

于 2013-02-21T17:14:05.063 に答える