Пробую написать чат на вебсокетах с использованием Ratchet.
Открываю порт и записываю каждое соединение в SplObjectStorage.
Заметил что при каждом обновлении страницы записывается новое соединение в объект, а старое остаётся, тоже самое с кучей открытых вкладок сайта.
Получается мой объект может содержать тучу данных. Пробовал не записывать новые коннекты если есть совпадение по ключу (например id юзера), но тут другой трабл возникает (не приходят сообщения в другие вкладки или браузеры где открыт сайт).
Чем грозит такой подход и как себя обезопасить от обжорства всей памяти?
1. Используйте асинхронный подход через WebStorage в качестве семафоров и через него ведите учёт принятых сообщений: последовательность дедупликацию (включая сокеты соединений) и прочее.
2. Используйте подход для реализации транзакций, чтобы предотвратить все возможные конфликты.