既存の PHP アプリケーションにリアルタイム通知を追加する必要があります。これを実現するために、node.js をインストールしました (すべてのリアルタイム機能のために socket.io を追加する予定です)
しかしながら、この 3 時間を費やして調査し、この 2 つを統合する方法を理解しようと努めたにもかかわらず、理解に近づくことはできなかったのです。
現在、以下を使用しています:
- アパッチ
- PHP の
- Nginx (画像や CSS ファイルなどのすべての静的コンテンツ用の Apache へのリバース プロキシとして)
- マイグレーション
クライアントから PHP にイベントを送信し、データベースに通知を挿入するコードは既に作成済みです。受信者がページを更新すると、もちろん通知が表示されます。クライアントへのリアルタイムのプッシュを処理するには node.js が必要ですが、どのように設定すればよいかわかりません。
このシナリオを考えると、私が本当に知る必要があるのは次のことです。
- すべてのコンテンツを引き続き Apache/PHP 経由で提供したい場合、クライアントへの node.js/websocket 接続はいつどのようにインスタンス化されますか?
- PHP から Node.js にメッセージを送信し、通知をクライアントにプッシュするように指示するにはどうすればよいですか?
- これをサポートするには、セットアップにどのようなバックエンドの変更を加える必要がありますか?
最終的には、PHP 関数を実行して、node.js/socket.io/websockets がクライアントに通知をプッシュできるようにしたいと考えています。どうすればそれが実現できるのか、まったくわかりません。
例/情報/ガイドをいただければ幸いです。
ベストアンサー1
このシナリオでは、Node.jsサーバーをセットアップして、ソケット.IOこれにより、ほぼリアルタイムのデータをクライアントに送信するためのクロスブラウザ方式が提供されます。
クライアントが PHP ページをロードすると、<script>
Node.js サーバーを指して Socket.IO をロードするタグが作成されます。ロードされると、Socket.IO JavaScript クライアントは Node.js Socket.IO サーバーに接続し、イベントが発行されるのを待機します。
さて、これらのイベントをPHPから送信したいので、PHPアプリケーションとNode.jsの間に通信チャネルが必要です。Redis pub/sub を使用する基本的に、PHP アプリケーションがメッセージを公開し、それをサブスクライブしている Node.js サーバーがそれを受信します。その後、これらのサーバーはすぐにクライアントにメッセージを渡して、PHP からさらにデータを取得できます。(ただし、Node.js サーバーに最初からそのデータを送信させるのも同じくらい簡単だとわかると思います。)
必要に応じて、Node.jsをNginxサーバーの背後に置くこともできます。しかし、真のWebソケットサポートには最新かつ最高のバージョンが必要です。