質問
facebook/gmailチャットに似たものを実装しようとしています。彼らがテクノロジーとしてコメット&ジャバーを使用していることは知っています。しかし、いくつかのことで混乱しています。
本当にジャバーが必要ですか?代わりに、from、to、message、sent、recd を含む単純な mysql テーブルを使用できますか?mysqlの使用に非効率な点はありますか?パフォーマンスの低下はありますか?
Comet は通常の Web サーバーを使用して実装できますか?特別なサーバーが必要ですか?私の知る限り、Apache + php は開いている接続が多すぎると処理できませんか?単純なポーリングを使用する必要がありますか? それはシステムに悪影響を及ぼしますか?通常のウェブホストではすぐに使えるものは何ですか?(だって私がチャットアプリを販売すれば、ほとんどの人に使えるはずだから。)
Comet を実装する (現時点で) 最善の方法はどれですか?無限の iframe は良いアイデアですか?しばらくするとphpがタイムアウトしませんか?それはクロスブラウザーのソリューションになるのでしょうか、それとも醜いハックを書かなければならないのでしょうか?それはサーバー負荷につながりますか?Gmail と Facebook は永久接続に何を使用しますか?
解決
グレート質問は、うまくいけば、これは週末にスタックで迷子にしません。あなたはフラッシュkirupaを使用したい場合はPHPおよびソケットを使用する方法についての良いチュートリアルを持っています。限り彗星が行くように、私は、サーバーの実装のいくつかの並べ替えを持っている必要が信じています。それは私の微弱な知識が今終わるところについてです。
単純なポーリングの例(jqueryの+ asp.net) http://trappedinhoth.blogspot.com/2009/04/ AJAX-jqueryの - チャット - demo.htmlする
Kirupaのチュートリアル(PHP5ソケット+フラッシュ8) http://www.kirupa.com/developer/flash8/php5sockets_flash8.htm
オープンソースのフラッシュチャットクライアント(もっとたくさん、グーグル) https://blueimp.net/ajax/する
コメット情報 http://cometdaily.com/する
私は実際にはより多くのリソースにあなたを指して、あなたの質問に答えていませんよ。私は他の人が答えるものにとして非常に興味があります。
他のヒント
私は本当にジャバーが必要ですか?代わりに、私はでき からして、単純なMySQLのテーブルを使用し、 メッセージに、送信され、RECD?ある MySQLを使用して任意の非効率性?あります そこに任意のパフォーマンスの低下?
はい、あなたはジャバーを使用するとMySQLないでする必要があります。あなたが読むことができるRDBMSを使用することが悪いフィットである理由の詳細については、ストーンブレーカーらによる[1] [建築時代の終わりを(それは完全な書き換えのための時間です)]。
彗星は、通常の使用して実装することができます ウェブサーバ?私はいくつかを持っている必要がありますか 特別なサーバ? ...私はシンプル使うべき ポーリングは、それが有害になります 私のシステムへの影響?私は何を使用することができます すぐに通常のウェブホスト上の? どのような永遠の接続のために、GmailやFacebookの使用していますか?
彗星は、漠然とした用語の少しですが、心配しないで。あなたは、ポーリングを使用してはならない、特別なサーバを必要としません。あなたは[BOSH] [2]を使用することができます - 。Facebookは(と私はGmailのを疑う)使用するものもある。
サーバー側でクライアント側([4]または[Githubの上に私のフォーク])[JSJaC] [3]を使用して、[ejabberd] [5]。どちらもサポート[BOSH] [6](および[BOSH以上のXMPP] [7])あなたは、直接あなたのXMPPサーバーへのHTTP接続を行うポーリングを避け、高トラフィック負荷を処理できることを意味します。
これらのすべてのためのリンクは http://delicious.com/petef/stackoverflow-843889でブックマークしていますの
私は、Jabberのは、安全に、MySQLは確かに(永続ストア)バックエンドであるとして(ママ)ミドルウェアとして概念化することができると思います。だから、リンゴとオレンジです。
メガスケールのWeb2.0のアプリケーションのどれが原因RDMBSのACID保証、およびそのスケーリング特性に遭遇した限界与えられたリアルタイムメッセージングのためのRDBMSに頼ることはできません。 (関連する問題の一つだけの感覚を得るために複数のサーバーを追加するには、その場で自分のSQLテーブルを分割すると考えてください。)
最も重要な考慮事項は、お使いのシステム内のメッセージの耐久性です。彼らは与えられた時間ウィンドウの間に永遠にのみ持続することになっています。そのチャットアプリケーションは、おそらくよりも、それは後者であることを考えます。なぜ、RDBMSの代わりにメモリベースのストアを使用していない?
なぜあなたは、Jabberのを使用する必要がありますか?まあ、その標準の並べ替えをするので、あなたはそれが、この時点では問題にならない場合でも、将来的には相互運用可能性を開くでしょう。
それは(今のところ)で、何でもあなたよりもより成熟であり続けることを想定して、確かに公正そのようさらに重要なこと、それは、(インターネット犬の年で)長い時間のために本格的な開発が行われていますシステムであり、 、設計、実装、デバッグ、および家の中で生産できるようにするまでに管理します。
全く彗星について無知なので、ノーコメント!