Laravel 4 で記述された Web アプリケーションを取得しました。このアプリケーションは Ratchet を使用し、より具体的には、パッケージLatchetを使用します。補足として、私は次のテクニックを使用しています:
これで、次のシナリオが得られました。
- Websocket を介して更新を受信する必要があるスライドショーがあります。
- アプリケーション全体がセットアップされ、ZeroMq を介して PHP から Websocket クライアントに新しいコード変更を公開できます。
私のroutes.phpには、トピックが正しく登録されるように、次のコードがあります。
//routes.php // Setup a connection and register a topic where clients can connect to. Latchet::connection('Connection'); Latchet::topic('PhotoStream/{client}', 'PhotoStreamController');
次に、ラチェット サーバーを起動します。
sudo php artisan latchet:listen
写真がアップロードされたら、次のコードを実行して、トピックをリッスンしているクライアントに更新をプッシュできます (PhotoStream/client1
この場合)。
// Create the object, save it to db and then publish it to my websockets
$photo = new Photo;
$photo->location = 'path/to/file';
$photo->save();
// Publish it through my websocket clients. (push from server).
Latchet::publish('PhotoStream/client1', array('msg' => $photo->toArray() ));
このコードはすべて機能しますが、更新の場合です。私の質問は次のとおりです。
クライアントの初期化はどのように処理すればよいですか?
- 最初に単純な古い PHP でページをレンダリングしてから、Websocket クライアントを初期化してから、さらに更新 (ある場合) を受け取る必要がありますか?
- または、新しい websocket クライアントを登録するときに、リクエストに追加のパラメーターを指定して、サーバーが websocket を介して完全なデータを送信する必要がありますか?
2 つのオプションのうち後者が最良のオプションのように思えますが、これを適切に実装する方法がよくわかりません。