- ベストアンサー
JSPかサーブレットでオセロゲーム
サーバに配置したサーブレットオセロをブラウザAとブラウザBが行う ブラウザAが石を置いたときにはその応答としてサーバからブラウザAの画面が更新されるが 相手が石を置くのを待っているブラウザBはブラウザAが石を置いても自分の画面を更新する方法がない という問題をどのように解決したらいいのでしょうか? HTTP定期的更新機能によって定期的に画面を更新すればできますがこれでは定期的に画面が更新されてしまいクール性に欠けます 何かいい方法は有るでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
アプレットは死んでるどころか、今は大流行ですよ。 yahooゲームもそうですし、世界中のサイトでめちゃめちゃ使われています。 確かに「遅さ」が原因で避けられていた時期もありましたが、それ以上に汎用性やセキュリティの強さでウェブでは人気の技術になってしまいました。 質問者さんの要件のような場合にも、普通はサーブレットよりもアプレットを使うことが多いのではないでしょうか
その他の回答 (4)
- arakororin
- ベストアンサー率39% (80/205)
> これならクールじゃないかな? だめですか… そうとなると、別にJSPやサーブレットという、webサーバー上の言語は無関係に、HTTPを利用したシステムでは実現不可能です。HTTPとはそういう仕様のプロトコルです。 それを実現する方法でJavaを使うとすれば、アプレットでソケットを利用してやることになるでしょうね。友人がちょうどJavaで通信対戦プログラムを作っていましたが、ちょうどそれと似たような感じになるのかと思います。
お礼
ありがとうございます 死んだと思っていましたが、アプレットはまだ利用価値があるのですね
- osumitan
- ベストアンサー率33% (102/307)
> ありがとうございます > 待っている側が何らかのアクションをしなければならない > ということは変わりないのですね そうですね。 Servlet/JSPはサーバサイドで動くものですから、 サーバ側からは通知のパケットをクライアントに投げられても クライアント側でそれを受ける処理ができませんからね。 ブラウザはあくまで自分からURLにリクエストを飛ばして その応答を待つことしかできないわけですから、 サーバ側がクライアントに通知するタイミングはそこしかなく、 (目立たないように)自動更新するしかないでしょう。
お礼
ありがとうございます やはり本質的に無理みたいですね
- arakororin
- ベストアンサー率39% (80/205)
Ajaxを学んでみるのがいいかも。 新しい技術で、ちょこっとだけしか知らないので、なんともいえませんが、おそらくこれで実現します。 基本はJavaScriptなので、恐れなくても大丈夫かと思います。 とりあえずちょっと抜粋。 Webブラウザを使ったWebアプリケーションでは、データをサーバに通知して処理結果を得るにはページ全体をロードしなおさなければならず、ネイティブアプリケーションのような操作性を得ることは難しかった。Ajaxでは、指定したURLからXMLドキュメントを読み込む機能を使い、ユーザの操作や画面描画などと並行してサーバと非同期に通信を行なうことで、サーバの存在を感じさせないシームレスなWebアプリケーションを実現することができる。 これならクールじゃないかな?
お礼
ありがとうございます 待っている側が何らかのアクションをしなければならないということは変わりないのですね サーバが待っている側に更新すべきことを知らせる手段は自動定期更新しかない事は避けられないので更新範囲を小さくすることによってシームレス的にするということですね
- kazsharp
- ベストアンサー率37% (16/43)
>定期的に画面が更新されてしまいクール性に欠けます というのは、画面のちらつきのようなものが気になるということでしょうか? それでしたら、幅が0のフレームをページに作っておいて、そのフレーム内だけ定期更新するようにして、相手が石を置いていたらメインのフレーム内を更新という方法もあります。 しかし「定期的に更新」という処理自体が「ダサイ」と考えられるなら、ちょっとサーブレット(orJSP)では実現するのは難しいと思います。 そもそも、サーブレットでオセロをやろうなんてクール性にかけます。(ジョークです)
お礼
ありがとうございます JSPでオセロを作るのは少し無理があるということですね
お礼
ありがとうございます 日本では高速インターネットが普通になっていますからこれからはアプレットが有望かもしれませんね