2011-09-21 20 views
9

Facebookチャットの仕組みは?誰も私に考えを与えることができますか?私は彼らがwebsocketまたはAJAXを使用しているという意味ですか?彼らはそれをどのように実装しましたか?Facebookチャットの仕組みは?

+0

フェアバッグを使ってfacebookページを見てください。特にコンソールタブ。 – Alfwed

+0

ちょうどいいヒント:XMPP –

答えて

10

それはcomet (see wikipedia)モデルです:

彗星は、長年のHTTPリクエスト が明示的に要求するブラウザ せずに、ブラウザにデータをプッシュするためにWebサーバーを可能にするWebアプリケーション・モデルです。彗星は、この相互作用を達成するための複数のテクニックを網羅した傘の用語です。これらのすべてのメソッド は、デフォルト以外のプラグインではなく、JavaScriptのようなブラウザにデフォルトで含まれている機能( )に依存しています。 Cometのアプローチは、ブラウザが完全な ウェブページを一度に要求するウェブの元のモデル とは異なります。

彗星のフレームワークの例はAPEです。それはjavascript用ですが、彗星はjavascriptだけではなく書くことができます。

0

ユーザは、WebSocketハンドシェイクと呼ばれるプロセスによってWebSocket接続を確立します。このプロセスは、ユーザーが通常のHTTP要求をサーバーに送信することから始まります。この要求には、WebSocket接続を確立することをサーバーに通知するアップグレードヘッダーが含まれています。 WebSocket URLはwsスキームを使用します。 HTTPSに相当する安全なWebSocket接続のためのwssもあります。 サーバーがWebSocketプロトコルをサポートしている場合、サーバーはアップグレードに同意し、応答のアップグレードヘッダーを通じてこれを通知します。 ハンドシェイクが完了したので、最初のHTTP接続は、同じ基本的なTCP/IP接続を使用するWebSocket接続に置き換えられます。この時点で、どちらの当事者もデータの送信を開始できます。

WebSocketを使用すると、従来のHTTP要求に伴うオーバーヘッドを招くことなく、好きなだけ多くのデータを転送できます。データはWebSocketを介してメッセージとして送信され、それぞれは送信するデータを含む1つ以上のフレーム(ペイロード)で構成されます。メッセージがクライアントに到達したときに正しく再構成できるように、各フレームにペイロードに関する4〜12バイトのデータがプレフィックスされています。このフレームベースのメッセージングシステムを使用すると、転送される非ペイロードデータの量が削減され、待ち時間が大幅に短縮されます。