7

サーバーがJava Webサービスになるチャットアプリケーションを実装する必要がある学校のプロジェクトがあります。

問題は、私は常に Web サービスをリモート関数を呼び出す方法と考えてきたことです。Web サービスで「セッション」をアクティブに保つ方法も、現在参加しているすべての人を追跡する方法もわかりません。チャット、ルームなど

4

4 に答える 4

7

私の知る限り、チャット サーバーは最初の接続後にクライアントを認識し、すべてのクライアント メッセージをすべてのクライアントに送信することになっています。これには、ある種のセッション メンテナンスが必要です。これを行う正しい方法は次のとおりだと思います。

  1. クライアントは Web サービスの「ハンドシェイク」を呼び出し、最小限の識別情報を提供します。
  2. サーバーは、一意のクライアント識別子を含む確認を返します。
  3. クライアントは Web サービス「メッセージ」を呼び出し、新しいメッセージをその識別子とともに送信します。
  4. サーバーは識別子でクライアントを識別し、すべてのクライアントにメッセージを配信します。

Web サービスは基本的にプッシュ サービスではなくプル サービスであるため、メッセージ配信がどのように機能するかはよくわかりません。おそらく、クライアントは、サーバーが呼び出す独自の Web サービスを公開する必要があります。

お役に立てれば、

ユヴァル=8-)

于 2009-05-24T08:47:55.047 に答える
1

COMETソリューションの実装を検討できます。これにより、効果的にプッシュ通信が可能になり、チャットアプリケーションにとって非常に優れた機能である遅延がなくなります。

ゴールドを狙う場合は、より高度な機能の実装を検討してください。

  • スペルチェック
  • 自動でリンクに変換されるURL/メールアドレス
  • 別々のチャットルーム
  • モデレーター機能 (チャットの終了、ユーザーのキック)
  • 「ユーザーが入力中...」などのイベント情報
  • ステータス (対応可能、ビジー、離席中...)
  • アバター
  • ...
于 2009-05-24T11:59:42.537 に答える
0

私は Java を知らないので、この回答は言語に依存しません。

私の意見では、サーバーでプロセスを実行せずにこれを行う最も簡単な方法は、すべてのデータをデータベースに保存することです。

実行する必要がある基本的なことの短いリストを次に示します。

  1. 認証用のユーザーとパスワードのリストを含むテーブルが必要
  2. 現在ログインしているユーザーのテーブルが必要です
    A. 最後の連絡先のタイムスタンプ フィールドが必要です
  3. ユーザーが何かを行うと、最後の連絡先フィールドが現在の時刻に更新されます
  4. ユーザーの最後の連絡時間が > 現在の時間 + 2 分である場合、ユーザーはログアウトされます
  5. クライアント側のアプリケーションは、サーバーに定期的にメッセージを送信して「私はまだここにいます」と伝える必要があります。
  6. メッセージがいつ送信されたか、およびメッセージが受信されたというクライアントの表示をいつ更新するかを判断する方法を見つける必要があります。これはあなたに任せます。

それでも助けが必要な場合は、AJAX/ASP.Net チャット アプリ (ソースは見ていません) がほぼ同じように機能するはずです。

于 2009-05-24T08:34:27.320 に答える
0

バックグラウンドでサービスを実行し、すべてをデータベースに格納するチャット エンジン、入力フォーム フレーム、および HTML ストリームを受信する出力フレームを作成しました。

サービス部分をスキップして Web サービス経由でのみ実装する場合は、少なくとも 2 つの操作を実装する必要があります。入力用の Post と、Javascript マジックを使用して HTML に変換されるチャットの出力を受け取る GetLatestChanges です。

もちろん、Unknwntech がスケッチしたように、部屋、ユーザー、メッセージ、どのユーザーがどのテキストを受け取るかなどを追跡する必要があります。

于 2009-05-24T11:21:26.953 に答える