web-dev-qa-db-ja.com

クライアントブラウザへのプッシュ通知

スーパーユーザーがリンクをクリックしたときに、ユーザーが画面上でアクセスできるように通知またはPDFなどのコンテンツを受け取るアプリケーションを作成したいと思います。

ユースケース:教師がPDFを生徒と共有したい場合、ダウンロード可能なpdfについて生徒に通知できる必要があり、同じことを行うためのリンクを提供する必要があります。

19
Harsha M V

これをCakePHPに実装したいので(Webベースのアプリケーションだと思います)、プッシュメッセージを受信するには、ユーザーは「アクティブ」ページを開いている必要があります。

これに対する最初の2つの答えを見る価値がありますが、他のサイトがこれをどのように達成するかについても考えてみてください。 Facebook、BBC、Stackoverflowなどのサイトはすべて、ページを最新の状態に保つための手法を使用しています。

Facebookは、ループ/タイマーで実行されるAJAXを使用して、プッシュのように見える方法で定期的に更新をプルしていると思います。更新要求が十分な場合(短時間) 、ほぼリアルタイムに見えます。長期間の場合は、プルのように見えます。最新性とブラウザ/プロセッサ/ネットワークのスラッシングの適切なバランスを見つけることが重要です。

実際のリクエストはシステムを破壊するべきではありませんが、一部のアプリケーションでは応答がはるかに大きくなる可能性があります。あなたの場合、各方向のデータは小さいので、リクエストループを非常に短くすることができます。

実験!

11
Leo

これを達成する方法はいくつかあります。最もサポートされている方法は、Cometまたはロングポーリングと呼ばれる手法を使用することです。基本的に、クライアントはサーバーに要求を送信し、サーバーは何らかのイベントが発生するまで応答を送信しません。これにより、サーバーがクライアントにプッシュしているように見えます。

クライアントをシミュレートするだけでなく、実際にクライアントにプッシュできる方法やテクノロジーは他にもありますが(Web Socketsなど)、多くのブラウザーはそれらをサポートしていません。

24
Tyler Holien

php-amqplib および RabbitMQ をご覧ください。これらを組み合わせることで、AMQP(Advanced Message Queuing Protocol)の実装を支援できます。基本的に、メッセージをプッシュすることでWebページを更新できます。

[編集]最近、プロジェクトに実装した プッシャー に出くわしました。これは、HTML5WebSocketを利用したリアルタイムメッセージングサービスです。それは本当にうまく機能し、無料の最下層プランがあります。実装も非常に簡単です。

6
Martin

標準のHTTPプロトコルでは、サーバーからクライアントへのプッシュは許可されていません。たとえば、AJAXリクエストを間隔を空けて使用することで、これをエミュレートできます。

6
Distdev

Node.jsをsocket.ioおよびexpressと組み合わせてチェックしてください。素晴らしい出発点 ここ

5
Allen Taylor