1

Skypeのチャットシステムのように、チャットのグループ化という1つの「高度な」機能を備えたWebチャットを開発する必要があります。

理論は些細なことですが、実際には非常に困難です。先週の金曜日からこれについて考えていましたが、このアーキテクチャをどのように適用できるかわかりません。基本的に、ストアの冗長性のない優れた構造のデータベースの設計が必要です。

わかりました.......これまでのところ簡単に思えますが、ここで主な機能であるユーザー別の履歴を紹介します。

2人のユーザーと1つのチャットを作成できます。2日が経過しました。会話に参加するために、3人目のユーザーを追加したいと思います。彼のチャットの履歴は異なります。彼はそのチャットで古いメッセージを表示できなくなります。

素晴らしいですね 友人のことを忘れないでください。XMLを使用して履歴をローカルに保存することはできません。SQLデータベースを使用する必要があります。私の場合、MicrosoftのSQL-Serverを使用しています。

私の問題を理解できますか?はいの場合、些細なことではありませんか?Ok。誰かが私がこの問題を解決する方法を考えることができますか?私はおかしくなりそうだ!

4

3 に答える 3

3

実際、問題些細なことです。それをXMLに保存することが本当の問題になります。

  • ユーザー(UserId、Name)
  • チャット(ChatId、ChatName)
  • ChatParticipation(ChatParticipationId、UserId、JoinChatMessageId、LeaveMessageId)
  • ChatMessages(ChatMessageId、ChatId、UserId、Message)

テーブルを追加することで、ユーザーがチャットに参加したのはChatParticipationいつかを正確に知ることができ( )、以前のメッセージのメッセージを表示しません。彼がチャットルームを離れたときを追跡できます。複数の参加/脱退は、個別の参加としてモデル化できます。ChatMessageIdJoinChatMessageIdLeaveMessageId

于 2012-08-27T14:19:57.940 に答える
1

私はあなたの問題を正しく理解しているかどうかわかりません。

私が理解している限り、4つのテーブルが必要です:user(userid、username)、conversation(conversationid、conversationtitle)、user_conversation(userid、conversationid)post(userid、conversationid、text)

userは、システムに登録されているすべてのユーザーを保存します。会話はすべての会話を保存します。user_conversationは、ユーザーが許可されている会話にユーザーをマップします。Postは、ユーザーが特定の会話で行った投稿を保存します。

これで、ユーザー別、会話別、またはその両方で、投稿からデータを簡単に取得できます。ユーザーに古い投稿を見せたくない場合は、日付フィールドを追加します。

よろしく

ルイージ

于 2012-08-27T14:19:20.247 に答える
1

あなたはどの言語 (PHP など) を言っていませんでした..だからちょっと難しいですが、私がこれを PHP の観点から作成していた場合、id に基づいてチャットを行うことになります。www.site.com/chat.php?id={id} そして、それに応じてユーザーを受け入れる/拒否する方法があります。

2 人のユーザーと 1 つのチャットを作成できます。OK、2 日が経過しました。会話に参加する 3 番目のユーザーを追加したいと思います。彼のチャットの履歴は異なります。彼はそのチャットで古いメッセージを表示できなくなります。

各メッセージに日付と時刻を指定して、ユーザー メンバーがチャットに参加すると、この日付/時刻のメッセージしか表示されないのはなぜですか? これは理論的には機能する可能性があります。

今日の午後 15 時 20 分にチャットに参加した場合、メッセージは 15 時 21 分以降にしか表示されません。

あなたの主な問題は、メッセージをリアルタイムで表示することです。これは Web アプリケーションであるためです。

幸運を!

于 2012-08-27T14:17:08.480 に答える