このプロジェクトについて
OwnChatは、コミュニケーションを自分で管理したいユーザー向けの自己ホスト型デスクトップチャットアプリケーションです。クライアント-サーバー-クライアントのアーキテクチャを採用しており、複数のデスクトップクライアントが中央サーバーに接続し、サーバーがメッセージをリアルタイムで中継します。このアプリケーションは、ユーザーインターフェースにJava Swing、ネットワーキングにJavaソケット、永続ストレージにOracle Databaseを使用して構築されています。
主な機能は以下のとおりです。
- **アカウント作成とログイン**: ユーザー資格情報は`USER_DETAILS`テーブルに保存され、ログイン時に検証されます。
- **連絡先管理**: ユーザーは連絡先を追加し、連絡先リストを表示し、チャットを開始する前に連絡先がオンラインかどうかを確認できます。
- **リアルタイムメッセージング**: ログインした各クライアントはサーバーにソケットを登録します。受信者がチャットウィンドウを開いている場合、メッセージはライブで中継されます。すべてのメッセージは`CHAT_HISTORY`に記録されます。
- **チャット履歴**: 連絡先とのチャットを再度開くと、以前のメッセージが送信者ごとに色分けされ、日付/時刻のヘッダー付きで再生されます。
- **テーマ**: ユーザーはMetal、Dark、Lightのルックアンドフィールから選択できます。選択したテーマはユーザーごとに`SETTINGS`テーブルに保存され、ログイン時に自動的に適用されます。
- **オンライン/オフラインステータスの追跡**: サーバーは、ユーザーが連絡先リストを開閉したり、ログイン/ログアウトしたりするたびに`LOG_STATUS`を更新します。ウィンドウを閉じたときの自動ログアウトフックも含まれます。
- **設定可能なサーバーIP**: クライアントは、簡単な設定画面から任意のサーバーホストを指定できます。
- **バージョン情報画面**: 開発者とブランド情報を表示します。
プロジェクトは、クライアントアプリケーション、サーバー、データベーススキーマの3つの主要部分で構成されています。クライアントは、さまざまな画面(ウェルカム、ログイン、アカウント作成、設定、連絡先、チャットウィンドウなど)用の複数のJavaクラスで構成されています。サーバーはマルチスレッドであり、各クライアント接続を個別のスレッドで処理し、`ConcurrentHashMap`を使用してメッセージ中継用の接続クライアントを追跡します。データベーススキーマには、ユーザー、設定、ログインステータス、連絡先、チャット履歴のテーブルが含まれ、新しいユーザーにデフォルト設定と初期ログアウトステータスを自動的にシードするトリガーがあります。
セットアップには、提供されているSQLスクリプトを実行してOracleデータベースを構築し、サーバー実行可能ファイル(OwnChatS-Portable.zip)を実行してデータベース資格情報を入力し、クライアント実行可能ファイル(OwnChat-Portable.zip)を実行してサーバーIPを設定し、アカウントを作成してチャットを開始します。ロードマップには、Servlets、JSP、J2EE、Spring BootをHTML/CSS/Bootstrapフロントエンドとともに使用した将来のWebベースバージョンが言及されています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.