Mam aplikację internetową napisaną w Laravel 4. Ta aplikacja korzysta z Ratchet i aby być bardziej szczegółowym, używa pakietu Latchet. Jak sidenote Używam następujących technik:Najlepsza praktyka podczas korzystania z websockets?
Teraz mam następujący scenariusz:
- mam pokaz slajdów, który powinien otrzymywać aktualizacje za pośrednictwem websocket.
- Cała aplikacja jest skonfigurowana i mogę publikować nowe zmiany kodu z PHP na moich klientach websocket poprzez ZeroMq.
W moim routes.php, mam następujący kod tak, że temat jest zarejestrowany poprawnie:
//routes.php // Setup a connection and register a topic where clients can connect to. Latchet::connection('Connection'); Latchet::topic('PhotoStream/{client}', 'PhotoStreamController');
Potem uruchomić serwer zapadkowy.
sudo php artisan latchet:listen
Gdy zdjęcie zostanie przesłany, mogę następnie uruchom następujący kod do pchania aktualizacje do klientów, którzy słuchają mojego tematu (PhotoStream/client1
w tym przypadku):
// 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()));
Ten kod działa, ale jest w przypadku aktualizacji. Moje pytanie jest następujące:
Jak powinienem obsłużyć inicjalizację klienta?
- Czy powinienem najpierw renderować stronę ze zwykłym starym PHP, a następnie zainicjować mojego klienta websocket, który następnie otrzyma dalsze aktualizacje (jeśli takie istnieją) ?.
- Czy powinienem, po zarejestrowaniu nowego klienta sieci web, podać dodatkowy parametr z żądaniem, aby serwer przesyłał mi kompletne dane za pośrednictwem stron internetowych?
Ta ostatnia z dwóch opcji wydaje mi się najlepszą opcją, ale tak naprawdę nie wiem, jak ją wdrożyć w dobry sposób.
Życzę więcej odpowiedzi. Rozpoczynam moją podróż od implementowania websockets z laravel; Niewiele wiem, ale moje poszukiwania trwają. –
Zdecydowanie bądź na bieżąco! –
Zdecydowanie nie korzystaj z BrainSockets. Mówią, że są na v1.0, ale serwer nie może pchnąć. Sprawdzę, kiedy spróbuję wtyczki innej wtyczki. –