2012-08-31 3 views
15

私はlaravelを使ってPHPで書かれたWebアプリケーションを持っています。PHPアプリケーション+ Socket.IO経由のWebSocketベースの通知

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

Socket.IOは下位互換性があり、正常に機能が低下するため、WebSocket/AJAXポーリング用に使用したいと考えています。

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

私はサーバーへのルートアクセス権を持っていますが、ApacheとNodeの両方を並行して実行したり、余分なものを追加しても問題はありません。

問題は、どのように私はPHPからNode + Sockets.IOにメッセージを送信するのですか?

そして、どのように私はSockets.IO + NodeからPHPにメッセージを転送するのですか?

ノード+ソケットをブラウザに残しました。これはかなり単純です。

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

私はDNode + PHPを知っていますが、Apache、PHP、Node、Socket.IO、DNodeなどのすべてを組み立てる方法は想像もできません。

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

答えて

8

using PHP and Socket.IOのこのチュートリアルは、あなたの質問の主要部分に答えています。

socket.ioはあなたの唯一の選択肢ではありません。 realtime web tech guideをご覧ください。それを見れば、今のところ最高のPHPベースのソリューションはRatchetです。別のプロセスとして実行する必要があるため、プロセス間の通信に問題が発生する可能性があります。

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

もう1つの選択肢は、私が働くPusherのようなホスト型サービスにリアルタイム通信をオフロードすることです。

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

+0

くそ、そのラチェット!それは所有している! http://socketo.me/docs/pushには、非ラチェットアプリからのプッシュ方法に関するステップバイステップのチュートリアルがあります。私は数分で機能を実装しました。ラチェットの場合は+10。 – jolt

+0

@leggetterうわー、プッシャーは私にとってここの本当の思い込みのように見えます。これを共有してくれてありがとう。私はそれを試してみたいと思う。これは自分のシステムを実装する時間を無駄にしています。 –

+0

ええ、Pusher.comは行くための元気なルートのようです! –

1

nodeとapache/phpの間で簡単に通信する方法はありません。だからあなたは、あなたの機能をすべてノードに書き直さなければならない(mysqlデータベースなどに接続する)か、Nodeから呼び出してソケットに渡すAPIを作成する必要があります。

しかし、Jquery graceful websocketsthis php classのようなjqueryプラグインを使用すると、sockets.ioではなく、jqueryとphpで独自のWebソケット機能を利用できます。

関連する問題