16

laravel を使用して PHP で記述された Web アプリケーションがあります。

ここで、サーバー -> クライアントからメッセージをプッシュし、クライアント -> サーバーからプッシュされたメッセージを取得できるリアルタイム通知システムを追加する必要があります。

Socket.IO は下位互換性があり、きれいに劣化するので、WebSocket/AJAX のポーリング部分に使用したいと考えています。

問題は、Socket.IO がデフォルトで Node.JS バックエンドで動作することです。

サーバーへのルート アクセス権があります。両方 (Apache とノード) を並行して実行したり、何かを追加したりしても問題はありません。

問題は、PHP から Node + Sockets.IO にメッセージを送信するにはどうすればよいかということです。

では、Sockets.IO + Node から PHP にメッセージを転送するにはどうすればよいでしょうか?

Node + Sockets to Browser の部分は省略しました。

Express.js + CURL および/または POST requests を利用した例を見てきましたが、それを行う低レベルの方法はありませんか?

私はDNode + PHPを認識していますが、Apache、PHP、Node、Socket.IO、DNode のすべてを組み立ててシームレスに動作させる方法を想像できません。

また、このPHP WebSockets サーバー実装を laravel ライブラリに変換しました。ただし、このライブラリの問題は、クライアント側でクリーンな WebSocket を使用することです。そして、 Socket.IO clientと一緒にハックする方法が見つかりませんでした。

4

3 に答える 3

8

PHP と Socket.IO の使用に関するこのチュートリアルは、質問の主要部分に答えます。

socket.io だけが選択肢ではありません。リアルタイム Web テクニカル ガイドをご覧ください。見た目では、現時点で最適な PHP ベースのソリューションはRatchetです。これは別のプロセスとして実行する必要があるため、プロセス間の通信の問題は引き続き発生します。

一般的なプロセス間通信の問題は、メッセージ キューを使用することです。次に、Apache で実行されている PHP アプリにリアルタイム Web テクノロジからのイベントを通知する場合に問題が発生します。リアルタイム Web 技術プロセスから apache サーバーへの呼び出しであっても、おそらく Web 呼び出しを介してそれを行う必要があります。

もう 1 つのオプションは、私が働いているPusherのようなホストされたサービスにリアルタイム通信をオフロードすることです。

この最近の質問も関連しており、いくつかの有用なリンクがあります: Is native PHP support for Web Sockets available?

于 2012-08-31T20:56:15.370 に答える
4

Elephant.IOはSocket.IOでPHPをサポートしているので、見てみましょう。

于 2014-08-28T08:33:17.380 に答える
1

ノードと apache/php の間で通信する簡単な方法はありません。そのため、ノードですべての機能を再度記述する (mysql データベースなどに接続する) か、ノードから呼び出してソケットに渡す API を作成する必要があります。

ただし、 sockets.io を使用するのではなく、jquery グレースフル websocketsのような jquery プラグインとこ​​の php クラスを使用して、jquery と php で独自の websockets 機能を取得できます。

于 2012-08-31T14:03:28.097 に答える