- 締切済み
チャットの作成
Javaでチャットを作ろうと思います。ブラウザ上で動作するもので、Servlet + JSP + Beansを用いて作成しようと思っています。たいていはjavaアプレットで作成したものが多いのですが、サーブレットで作成したいと思ってます。どなたか作成方法などのアドバイスをよろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
Ajaxとかは?
- yusukey
- ベストアンサー率56% (17/30)
ご認識の通りWebの性質上サーバ側から画面更新のアクションを起こすことはできません。 よくあるのは一定間隔で画面をリフレッシュさせる方法でしょうか。 具体的には以下のように META タグで実現します。 <META HTTP-EQUIV=Refresh CONTENT="10; URL=http://表示中のチャットのURL/"> ちょっと凝ったのでは XMLHttpRequest を利用したものがありますね。
- ngsvx
- ベストアンサー率49% (157/315)
余計なお世話かもしれないですが、どうしてサーブレットやJSPでできないのかがとても大事だと思うのですが。。。 もっとも、 ・仕事でプログラムは関係ない or ・今回のプログラムしか作るつもりがない というのなら、どうでもいいことですが。
furitenさんのご質問のようなJavaプログラムの実装の一例を挙げると、 「お絵描きしぃちゃっと PaintChatApp」という Java言語で書かれたものがあります。 アプレット名でお分かりかと思いますが 文字によるチャットはもちろん可能であり、 さらにそれに加えて参加者みんなで絵が描けるものです。 クライアントにはJREが必要です。 サーバにはServletの実行環境が必要になり、現時点では個人向けのレンタルサーバー業者のサービスで利用するのはまず不可能ですが自宅PCをサーバ代わりに使用できる(VDSL、CATVに多いプライベートIPアドレスしか割り当てないプロバイダは設置不可。固定IPは不要で設置可能)ようです。 下記に作者WebサイトURLを示します(参考URLにも同じURLを記載)。 http://shichan.jp/ で、下記にダウンロードWebページURLを示します。 http://hp.vector.co.jp/authors/VA016309/paintchat/download.html さらに下記にPaintChatの設置、設定説明のWebサイトのURLを示します。 http://www.amr.jp/ さらに下記に実際に同チャットプログラムが体験できるロビーがあります。ロビーのURLを示します。 http://chat.paintchat.jp/~aotama/paintchat02/paintchat.html オープンソースではありませんのでソースコードの確認はできませんがよろしかったら参考にしていただければと思います。
- 参考URL:
- http://shichan.jp/
- Bonjin
- ベストアンサー率43% (418/971)
>相手の発言はどうやってすぐ更新する。ということなどがイメージがわかずにいます。 HTTPを使用する以上、リアルタイムに更新するのは無理です。それはWebサーバ側からクライアントに対しての通信ができないからです。 CGIやASPで作られているチャットと同じ様にHTMLでリフレッシュ指定するか、JavaScript等を用いて定期的に更新させるほかないと思います。 JSPもServletも基本的にはHTMLやJavaScriptをはき出すだけなので、従来のCGIやASPと考え方は同じですので、書式は違うにしろ、それらで作ってあるプログラムも参考になるかと思います。
- Bonjin
- ベストアンサー率43% (418/971)
たぶんサーブレット等の経験はないですよね? まずは、Web上のサンプルなどの簡単なものを作りながらサーブレットやJSPに対する理解を深めていきましょう。 ある程度理解が深まって、自分でチャットプログラムのイメージが湧くようになったら作り始めましょう。
補足
早速、ありがとうございます。 サーブレット等のサンプルはつくりました。 チャットで一番イメージのわかない部分は自分が発言するのには、何か自分でアクションを起こすので、すぐ画面が更新されるのがわかるのですが、相手の発言はどうやってすぐ更新する。ということなどがイメージがわかずにいます。無知で申し訳ございませんが、どうにかしてサーブレット等で作成したいのでまたアドバイスお願いします。
補足
ありがとうございます。 無理なんですか・・・ しかたないですね、JSPやServletを使ってやりたいと思ったんですが、ほかの方法を考えてみます。 何かまたアドバイスお願いします。