Где хранить соединение для сокетов в Ratchet

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
KEFIR4UK
Сообщения: 97
Зарегистрирован: 2014.12.13, 16:24

Где хранить соединение для сокетов в Ratchet

Сообщение KEFIR4UK »

Всем Привет.
У мене, в принципе простая задача - сделать блокировку редактирования постов (тоесть если пост уже редактируется одним пользователем то второй этого не может делать и соответственно отображать на стренице списка постов в режиме реального времени какие посты редактируются а какие нет).
Для реализации задачи решил использовать веб сокет и билиотеку Ratchet.
В примере , все соединения сохраняются в SplObjectStorage.
Вопрос в том, рационально ли сохранять их в SplObjectStorage при большом количистве соидинений?
И если сохранять их в базе, то каким способом лутше всего это делать? В голову пришло хранить все в редисе или как то сериализовать их.
Melodic
Сообщения: 87
Зарегистрирован: 2016.05.11, 17:43
Откуда: Луганск

Re: Где хранить соединение для сокетов в Ratchet

Сообщение Melodic »

Соединение в базу никак не положишь.

Лучше в cторону Centrifugo смотреть.
KEFIR4UK
Сообщения: 97
Зарегистрирован: 2014.12.13, 16:24

Re: Где хранить соединение для сокетов в Ratchet

Сообщение KEFIR4UK »

Решил делать через Push Integration.
Идентификаторы постов сохраняю в редисе. И через редис уже смотрю какие посты сейчас редактируются.
Но есть одна проблемка - при закрытии соединения (пользователь закончил редактировать пост, покинул страницу) мне нужно отлавить это событие. В самой библиотеке есть метол

Код: Выделить всё

  public function onClose(ConnectionInterface $conn)
    {
    }
Мог бы использовать его, но там не содержется информации какой ето пост.
Пришлость закостылять таким способом что при закрытии страници через js я на сервер послылаю ajax запрос с id поста, и уже на сервере
я разсылаю всем подписчикам что такой пост уже не редактируется.
Можно как то обойтись без такого костыля?
Ответить