У меня есть веб-приложение, написанное в Laravel 4. Это приложение использует Ratchet и, если быть более конкретным, оно использует пакет Latchet. Как заметка на полях, я использую следующие методы:Лучшая практика при использовании websockets?
Теперь я получил следующий сценарий:
- У меня есть слайд-шоу, которое должно получать обновления через websocket.
- Все приложение настроено, и я могу публиковать новые изменения кода с PHP на своих клиентов в сети через ZeroMq.
В моей 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, предоставить дополнительный параметр с запросом, чтобы сервер отправил мне полные данные через websockets?
Последний из двух вариантов представляется мне лучшим вариантом, но я действительно не знаю, как реализовать это в хорошем смысле.
Желаю вам большего ответа. Я начинаю свое путешествие с помощью websockets с laravel; Я мало знаю, но поиск продолжается. –
Определенно держите меня в курсе! –
Ну, определенно не используйте BrainSockets. Говорят, что они на v1.0, но сервер не может нажать. Я вернусь, когда попробую подключиться к другому плагину. –