- 締切済み
チャット開発に向いている言語
PHP+Ajaxでリアルタイムチャットを作成しています。 1秒ごとにブラウザからリクエストを送り、新しい発言があれば更新するという処理をさせていますが、この方法だと新しい発言があっても無くても1秒置きにリクエストを送ることになるので無駄があると思います。 PHP+Ajaxではどうしてもこの問題を解決できないので、他の言語で開発することを考えています。 そこでチャットを作るのに向いている言語があれば教えて頂きたいです。 またCometなどのチャットに関連した技術についても何かあればお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mtaka2
- ベストアンサー率73% (867/1179)
どんな言語で開発しても、「WWWのサーバとクライアント」というしくみを使うかぎりは 「新しい発言があっても無くても1秒置きにリクエストを送ることになるので無駄」という問題は発生します。 で、質問者さん自身が書かれてますけど、「COMET」が解決策になると思います。 COMETとたいそうな名前が付いていますが、すでに「PHP+Ajax」なチャットが出来ているのであれば、その先は難しくありません。 「PHP+Ajax」なチャットだと、 1. ブラウザ側からはAjaxでリクエストを送る 2. サーバ側(PHP)は新規発言があればそれを返す 3. ブラウザ側は、新規発言を受け取ったらそれを表示に追加する 4. (一定時間待ってから)1に戻る といった流れになるかと思います。 ここで、COMET の場合、2のところで、PHP側は、新規発言がない場合は、発言されるまで処理を中断します。そして、新規発言が行われたらそれを返します。 あとは、4で、「1秒おき」ではなく「Ajaxの結果が返ってから1秒後」とかにすれば、 基本的な構造はそのままで、ムダなリクエストを無くすことができます。 ただし、このままだと2の所でブラウザとサーバの間でコネクションが張られっぱなしになりますが、 ブラウザによってはコネクション総数に制限がありますしから、時々タイムアウトしてコネクションを切断するように、といった小技は必要になるかと思います。
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
そういうのはP2P接続ができればPHPだろうがPerlだろうが、CやJava、何でもかまいません。 ただし、CGIではP2Pができませんので、 専用サーバーソフトを作る(ApacheやIISと同じ機能を持つ物を作る)必要があります。 http://code.google.com/p/phpwebsocket/ クライアント(通信相手)としてJavaScriptが使われていますが、 当然、CやJavaなどで専用ソフトを作れば、それでもアクセス出来るようになります。 Apacheモジュールとして(mod_php、mod_perlなどで)作ることも出来るらしいですがよくわかりません。
お礼
ありがとうございます。 なるほどサーバとクライアントを一から作るのですか。 CGIで作るのに比べると難易度がかなり高そうですが、良い勉強になりそうです。
お礼
ありがとうございます。 Cometは何か特殊な技術だと思っていたのですが、PHPでも実装できるのですね。 ネットで調べながら作ってみようと思います。