サイトへの訪問者とのコミュニケーションのための「ライブ」

Realplexor-habrahabr.ru/blogs/hi/79189-を発表しました。これは、Perlで作成され、JavaScriptおよびPHP用の既製のAPIを備えたシングルスレッドのイベント指向のCometサーバーです。 これを使用すると、ページをリロードすることなく、トラフィックを大幅に消費することなく、ユーザーがリアルタイムで相互作用するサイトを作成できます。



今日は、Realplexorを使用してRuTvitプラットフォームで作業している、 ライブブロードキャスト製品の最初のバージョンのちょっとした「エンジンの詳細」を紹介します。 これは、ウェブマスターが1分で自分のウェブサイトにインストールして、リアルタイムで視聴者とのマイクロブログ通信を調整できるウィジェットです。



「ライブブロードキャスト」の助けを借りて、サイトの視聴者はリアルタイムで互いに通信します。「今」、サイトに接続された別の「チャットルーム」にいます。 ウィジェットは、多くのユーザーとの「直接対話」に一度に使用できます。たとえば、バグや機能のリクエストを受信します。 チャットしたユーザーがまだサイトにいる場合は、そのユーザーの存在が表示されます。名前の横に緑色の円が表示されます。



通信を開始するために、サイト訪問者は登録手順を実行する必要はありません。 承認はOpenIDによって実行されます。 つまり メッセージを書き始めるには、Yandex、Google、LiveJournalなどのアカウントを持っているだけで十分です。 電子メールさえ必要ありません。



サイトにウィジェットを挿入するには、ページrutvit.ru/tools/widgets/chatからHTMLコードをダウンロードするだけで十分です -ところで、色やすべてのCSSをカスタマイズし、サイトの任意の(またはすべての)ページに貼り付けることができます。



<iframe src="http://rutvit.ru/tools/widgets/chat/embed?tag=&q=" width="280" height="400" style="border:1px solid #cccccc;overflow:hidden" frameborder="0"></iframe>







内部にどのように配置されていますか?



技術的には、ウィジェットはIFRAMEタグに読み込まれる一種のJavaScriptアプリケーションです。 これは安全です: IFRAMEコンテンツは別のドメインにあり、サイトのCookieとページのDOMツリーは利用できません。



特別なJavaScriptコードは、Realplexorサーバーの「バッテリー」全体との永続的な(長いポーリング)接続を編成し、Realplexor JavaScript APIを使用します。 スクリプトが数秒に1回サーバーからデータを再要求する必要がある通常の「ポーリング」とは異なり、Realplexorで実装された「ロングポーリング」ははるかに最適に機能します。 Realplexorサーバーに特別なURLをロードするXMLHttpRequestオブジェクトを作成します。 同時に、新しいメッセージがチャットに到着するまで、サーバーは「フリーズ」してクライアントに何も返しません(接続が少なくとも1時間「ハング」することがあるため、この技術は「ロングポーリング」と呼ばれます)。 メッセージが表示されるとすぐに、Realplexorは接続されているすべてのクライアントにメッセージを転送し、接続を閉じます。 クライアントは新しいXMLHttpRequestオブジェクトを作成し、サーバーに再度接続します。 また、予期しない切断が発生した場合、クライアントはサーバーに再接続します。



Realplexorは、プロセスの「バッテリー」全体の形で、デーモンの集中起動/再起動/停止をサポートします。各プロセスは、独立したユーザーセットにサービスを提供します。 これにより、CPUリソースの最適な使用が可能になり、イベントモデルの基本的なシングルスレッドが補正されます。 ライブウィジェットの場合、サイト所有者はサーバー間で均等に分散されます。 したがって、追加のマシンをインストールすることで電力を増やすことができます。 ただし、多くの場合、1台のマシンで十分です。たとえば、8コアプロセッサを搭載している場合、8つのプロセスからRealplexorsのバッテリーを起動し、パフォーマンスを8倍向上させることができます。



OpenID認証はIFRAME内で発生します。 したがって、Live Streamがインストールされている(またはRutvitにログインしている)任意のサイトに一度ログインすると、他のサイトの他のすべてのウィジェットにログインします。



技術的には、ユーザーがウィジェットに書き込んだすべてのメッセージは、タグ#VisSiteとともにRutvitに保存されます(インストール中にこのタグを変更できます)。 したがって、ウィジェットはチャンネル#YourSiteからのツイート以外は表示しません。 ウィジェットは、サイトのプリズムを通じてマイクロブログサービスを操作するためのインターフェースです。



結論の代わりに



ウィジェットを開発するための多くのアイデアがあります。 ただし、ライブストリームを改善するためのフィードバックや新しいアイデアを喜んで受け取ります。 特に、ウェブマスターの意見は興味深いです。あなたにとって便利なツールになるように、そのようなウィジェットに何を持ちたいですか?



類似の(ある程度)製品へのリンクを提供するのは公平でしょう: 1 2 3 4 5 「Live」とその類似物との主な違いは、マイクロブログシステムに基づいて構築されており、「真空状態」では単独では存在しないことです。



All Articles