Появилась проблема на сайте с тем что, каждые 10 сек был ajax запрос который оправшивал php файл, а тот отвечал есть ли для уведомления в виде сообщия от других юзеров(нотификация о новых сообщениях), у меня началась проблема с тем что онлайн стал расти и появилась ошибка mysql: too many connections.
Я сделал опрос файла каждые 30 сек, ошибка стала появляться очень редко, но все же появляется, я подумал что это бред, у меня же есть node.js, подумал я, у меня на нем уже написан кол-во онлайн в реал тайм.
Отлично подумал я, надо написать нотификацию о новых сообщениях и получения новых сообщений в личных сообщениях, update и delete сообщений в переписке.
Но у меня возникло сразу несколько вопросов.
1. Как отправлять новые сообщения и нотификации именно тому человеку которому они принадлежат ?
2. Как понять что человек авторизован на сайте ?
3. Как вообще все это реализовать, я просто не представляю ?
У меня на сайте стек: php7, (node.js, express, socket.io), mysql, nginx, redis.
Я что-то гулил, натыкался на разные shared session php node.js, notification redis real time, redis session.
Крч, мне реально стало ещё больше непонятно как это сделать ?
Я хочу чтобы были реалтайм сообщения между юзерами, реал тайм нотификации о новых сообщениях, как понять онлайн и авторизован ли сейчас конкретный юзер и есть ли для него новые сообщения если есть дать нотификацию, если юзер на странице в которой он ведет свою беседу с человеком хочу чтобы туда в реал тайм прилетали новые сообщения.
Нужно простое и элегантное решение без особых заморочек.
Может я вообще не там ищу хз.
Прошу подсказать направить, заранее всем спасибо за помощь!!!
Роман Мирр, ты видать не понимаешь, что юзать mysql для онлайн чата - это все равно, что писать каждый свой шаг на бумажку.
В Worker можно создавать массив сессий - всех подключившихся в callback функцию - onConnect(), и при новом сообщении можно отсылать его всем остальным участникам. Привет 21 век.
Роман Мирр, дак верь мне, я программист!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Ну а если серьезно, кто-то правда будет использовать mysql для real-time чата?
P.S. Скажу так, сам начинал изучение бекенда с написания мессенджера для одной онлайн-игрульки, ох, я сделал около 40 версий, и ни одну не выпустил. Почему? Потому что.
онлайн стал расти и появилась ошибка mysql: too many connections.
Я сделал опрос файла каждые 30 сек, ошибка стала появляться очень редко, но все же появляется, я подумал что это бред, у меня же есть node.js
Если допустить, что с node.js не закрываются соединения с MySQL, то это не бред. Тогда их количество растет и доходит до лимита. Нужно либо использовать пул соединений, либо уменьшать время соединения с СУБД. А лучше и то и другое вместе.
А если не решать эти проблемы, тогда можно повысить лимит в конфигурации MySQL и выделить больше ресурсов машине.
Касательно вопросов, нужно почитать что такое аутентификация и авторизация. А, поняв что это такое, начать реализовывать либо искать библиотеки.
Или не морочить себе голову и просто интегрировать готовое решение на сайт.