リアルタイム更新のためにソケットの使用が必須であるサイトの開発を検討しています。wordpressではnode.jsとsocket.ioを組み込むのが難しいことを理解しており、これはdrupalに当てはまるかどうか疑問に思っていました。具体的には、node.js と socket.io を php に組み込むことはできますか? 具体的にどのような手順を踏む必要がありますか? 私は助けに感謝し、もちろん、あなたが私に良い答えをくれたら、あなたを評価します.
3 に答える
現在、Drupal、Joomla、および WordPress に接続する Node.js モジュールがあります。私は Joomla 用のものを書きました: https://github.com/jlleblanc/nodejs-joomlaこれらはすべて NPM から見つけることができます。まず、これらのモジュールの 1 つをダウンロードし、次に Socket.io モジュールもダウンロードします。次に、CMS を Socket.io に接続するサーバー側コードを記述します。最後に、Node.js で実行されているソケットと対話するクライアント側コードを記述します。
それを分離することができ、node.jsとのクライアント/サーバー通信が必要なため、Drupalの外部でそれを行うことができます(これが最も簡単でクリーンな方法です)。
使用するCMS(DrupalまたはWordpress)は、JavaScriptがCMSサーバー側コードの外部で行われる呼び出しにsocket.ioおよびnode.jsを使用することを制限しません。あなたは例えばすることができます。Drupal / Wordpressと同じデータベースを読み取りますが、Node.jsを使用して、結果をクライアント側のJavaScriptスクリプトに直接返します。
Socket.IOを好きなテクノロジーと統合することができますが、それらを通信する必要のある2つの別個の部分と考える必要があります。
Socket.IOが外部サービス(Drupal、Joomla、Wordpressなど)と通信するための2つのソリューションがあります。
1)Socket.IOアプリケーション用のREST APIを作成します(たとえば、APIレイヤーにExpressを使用し、EventEmitterを使用してSocket.IOにメッセージを渡します)。
2)私の意見では、より良い解決策は、Redis、RabbitMQ、ZeroMQなどのメッセージキューを使用することです。Drupal Webサイトは、チャネルを介してSocket.IOにメッセージを送信し、次にSocket.IOがそのメッセージをクライアントに送信します。
認証も必要なシステムを作成している場合は、ユーザーがSocket.IOを使用して直接メッセージを送信するのではなく、代わりにメインサーバー(Drupalなど)にAjax呼び出しを行うことをお勧めします。そうすれば、ユーザーのIDをより簡単に確認できます。(このシナリオは、認証を必要とするチャットベースのシステムに適しています)
このビデオチュートリアルはFayeを使用したEventMachineを対象としていますが、同じロジックをアプリに適用できます:http: //railscasts.com/episodes/260-messaging-with-faye