1

私は現在、友人がアップロードしたものを見ることができるユーザー向けのニュースフィードビューに取り組んでいます。しかし、私が仕事に取り組めないのは、誰かが新しいコンテンツをアップロードすると、ページをリロードする必要なく、すぐに全員のフィードに自動的に表示されるようにすることです

ユーザーがページのどこかをクリックすると、Facebook はこれを自動的に行うようです。

どんな助けでも大歓迎です。これは本当にページの価値を高めます!

それが機能する場合、これはたとえばコメントやその他のコンテンツで機能しますか?

4

1 に答える 1

1

これには、長いポーリングまたはプッシュ通知が必要になります。これはnodejsで非常に簡単に処理できますが、nodejsのようなものなしでこれを行うと悪夢になり、ブラウザーがサーバーに継続的にpingを実行する必要があるため、サーバーの負荷が大幅に増加します。

一方、nodejsを使用すると、socket.ioなどを利用して、ブラウザーとサーバーの間に非同期トンネルを確立し、pub/subを実装できます。基本的に、それが機能する方法は次のようになります。

Nodejsは、ブラウザとサーバー間のasych通信を処理します。最初のページの読み込み時に、現在のコンテンツは通常どおり標準のhttpリクエストによってブラウザにシャトルされます。さらに、nodejsサーバーへのトンネルが開かれ、ユーザーはそのページのチャネルにサブスクライブされます。

誰かが新しいノードを投稿し、node_saveフック内で、新しく公開されたノードに関する詳細を含むイベントがnodejsサーバーに発生します。次に、新しいデータがチャネルに送信され、ページに接続されているためにチャネルにサブスクライブされているすべてのブラウザが新しいデータを受信します。これにより、クライアント側のJavaScriptが新しいデータでビューを更新します--または--refresh景色。

それは複雑であり、プラグインして箱から出して作業を行うことができるものではありません。nodejs統合モジュール(http://drupal.org/project/nodejs)には、drupalログ用のこの例が付属しています。あなたが探していることは、おそらくその例と同様の方法で実装できます。

于 2012-12-11T22:01:57.810 に答える