(Translated by https://www.hiragana.jp/)
Comet - Wikipedia コンテンツにスキップ

Comet

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』

Comet(コメット)とは、Web アプリケーション構築こうちくするさい利用りようされる技術ぎじゅつで、この技術ぎじゅつ使つかうと、サーバ発生はっせいしたイベントクライアントからの要請ようせいなしにクライアント送信そうしんすることができる。

Comet はこのような通信つうしん実現じつげんするための複数ふくすう手法しゅほうをまとめた概念がいねんである。これらの手法しゅほうはブラウザにプラグインを追加ついかすることなく、(JavaScript のような)デフォルトの機能きのう実現じつげんされるものである。理論りろんてきには Comet は、ブラウザがデータを要求ようきゅうするかたち既存きそんのウェブのモデルとはことなっている。実際じっさいは Comet アプリケーションは AjaxLong polling使用しようしてサーバじょう新規しんきデータを取得しゅとくする。

Cometは既存きそん技術ぎじゅつ利用りようしてサーバーからの通信つうしん実現じつげんする技術ぎじゅつであるが、既存きそん技術ぎじゅつ本来ほんらいはサーバーからの通信つうしん想定そうていしたものではなく、そのため不都合ふつごうおおかった。2011ねんにははじめから双方向そうほうこう通信つうしん想定そうていした技術ぎじゅつであるWebSocket定義ていぎされている。

なぜ必要ひつようなのか

[編集へんしゅう]

従来じゅうらい方法ほうほうでは、ウェブページはクライアントからリクエストがあったときのみクライアントに配信はいしんされていた。クライアントがリクエストするたび、ブラウザはサーバへの HTTP コネクションを生成せいせいし、ウェブサーバはクライアントにデータをかえし、そのコネクションはじられる。この方法ほうほう欠点けってんは、ユーザが明示めいじてきにページのリフレッシュをおこなうか、またはユーザがあたらしいページに移動いどうする場合ばあいにしか表示ひょうじされるページが更新こうしんされないことである。ページをすべて転送てんそうするのにはなが時間じかんようするので、ページのリフレッシュは多大ただい遅延ちえんみだす。

この問題もんだい解決かいけつするために、ブラウザに変更へんこうがあった部分ぶぶんだけをリクエスト・更新こうしんさせる技術ぎじゅつである Ajaxもちいることができる。この方法ほうほうだとデータ通信つうしんりょう従来じゅうらい方法ほうほうよりすくなくなるため、遅延ちえん度合どあいすくなくなり、サイト全体ぜんたいのパフォーマンスは向上こうじょうするといえる。さらにえば、非同期ひどうき通信つうしんもちいることにより、ユーザは段階だんかいてきにデータを受信じゅしんしながら作業さぎょうをすることが可能かのうになるため、その意味いみでもパフォーマンスは向上こうじょうする。

しかし Ajax をもちいたとしても、クライアントがサーバからデータを取得しゅとくするまえにはそれにたいするリクエストをさなければならないというくるしい問題もんだい依然いぜん存在そんざいする。この問題もんだいは、たとえば「べつのクライアントがデータをおくってきた」というようなサーバじょうでのイベントが発生はっせいするのを待機たいきする必要ひつようのあるアプリケーションを設計せっけいするときにおおきな障害しょうがいとなる。

サーバじょうでイベントがこったかどうかを周期しゅうきてき確認かくにんさせる(いわゆるポールループさせる)ようにアプリケーションを設計せっけいするのはひとつの解決かいけつさくである。しかしこの方法ほうほうは、アプリケーションは結局けっきょくサーバじょうのイベントが完了かんりょうしたかどうかのわせにおおくの時間じかん使つかってしまうため、あまりエレガントとはいえない。また、ネットワークの帯域たいいきおお消費しょうひされてしまう。

実現じつげん手法しゅほう

[編集へんしゅう]

一般いっぱんてきに、Web サーバはクライアントからのリクエストをるとすぐにレスポンスをかえす。

Comet を利用りようした Web アプリケーションでは、サーバはクライアントからのリクエストにたいしてすぐに応答おうとうせず、保留ほりゅう状態じょうたいにしておき、サーバじょうでなんらかのイベント(チャットでだれかが発言はつげんしたなど)が発生はっせいしたときにレスポンスをかえす。こうすることによって、サーバで発生はっせいしたイベントを即座そくざにクライアントに送信そうしんすることができる。

関連かんれん項目こうもく

[編集へんしゅう]

外部がいぶリンク

[編集へんしゅう]