Всем Привет.
У мене, в принципе простая задача - сделать блокировку редактирования постов (тоесть если пост уже редактируется одним пользователем то второй этого не может делать и соответственно отображать на стренице списка постов в режиме реального времени какие посты редактируются а какие нет).
Для реализации задачи решил использовать веб сокет и билиотеку Ratchet.
В примере , все соединения сохраняются в SplObjectStorage.
Вопрос в том, рационально ли сохранять их в SplObjectStorage при большом количистве соидинений?
И если сохранять их в базе, то каким способом лутше всего это делать? В голову пришло хранить все в редисе или как то сериализовать их.
Где хранить соединение для сокетов в Ratchet
Re: Где хранить соединение для сокетов в Ratchet
Соединение в базу никак не положишь.
Лучше в cторону Centrifugo смотреть.
Лучше в cторону Centrifugo смотреть.
Re: Где хранить соединение для сокетов в Ratchet
Решил делать через Push Integration.
Идентификаторы постов сохраняю в редисе. И через редис уже смотрю какие посты сейчас редактируются.
Но есть одна проблемка - при закрытии соединения (пользователь закончил редактировать пост, покинул страницу) мне нужно отлавить это событие. В самой библиотеке есть метол
Мог бы использовать его, но там не содержется информации какой ето пост.
Пришлость закостылять таким способом что при закрытии страници через js я на сервер послылаю ajax запрос с id поста, и уже на сервере
я разсылаю всем подписчикам что такой пост уже не редактируется.
Можно как то обойтись без такого костыля?
Идентификаторы постов сохраняю в редисе. И через редис уже смотрю какие посты сейчас редактируются.
Но есть одна проблемка - при закрытии соединения (пользователь закончил редактировать пост, покинул страницу) мне нужно отлавить это событие. В самой библиотеке есть метол
Код: Выделить всё
public function onClose(ConnectionInterface $conn)
{
}
Пришлость закостылять таким способом что при закрытии страници через js я на сервер послылаю ajax запрос с id поста, и уже на сервере
я разсылаю всем подписчикам что такой пост уже не редактируется.
Можно как то обойтись без такого костыля?