Всем, привет!
Решил я сделать реал-тайм уведомления на сайте и обновление сообщений в диалоге.
Сам сайт на php, запущен также nodejs сервер.
В ноде: express, socket.io, redis и т.д.
Как у меня было ?
Допустим, как было реализованы уведомления ?
Просто тупо ajax запросы n кол-во раз в минуту, из-за большого онлайна и юзеров могло быть куча вкладок, плюс они ходят по вкладкам, вообщем чуть ли не постоянно БД получала too many connections.
Я решил все переделать на ноду с соединением через вебсокет.
Я идентифицирую юзера, создаю для него уникальную комнату на основе его id, также я складываю в отдельный массив всех коннекты юзеров.
Если в брокер поступило какое-то уведомление, я шлю в комнату все эти уведомления, для конкретного юзера, если куча вкладок, то будет для всех открытых вкладок уведомление, я хочу сделать так как в вк, если допустим открыт диалог и окно активно, никаких уведомлений, просто показываем новое сообщение, если допустим открыт диалог, но окно не активно то звук уведомления, если открыт диалог, но активна другая страница того же вк, то уведомление будет на активной вкладке, как этого добиться ?
Проблема в том, что уведомление идет на все вкладки открытые и надо понять, открыт ли диалог, на какой вкладке сейчас человек и т.д.
чуть ли не постоянно БД получала too many connections
Возможно, время между открытием соединения и закрытием проходит достаточно много времени и поэтому СУБД вынуждена держать много открытых соединений одновременно, что плохо.
Скорее всего, код нужно исправлять.