node.js и mysql

1. Вусал (13.11.2014 / 12:19)
Все привет

Есть код каждую секунду делает запрос к БД и отсылает строчку клиенту.
setInterval(function(){
//Select *....
//io.socket.send.....
}, 1000);
Если такая реализация, чтоб не каждую секунду делать запрос к БД, а чтоб при вставке новых строк, тут же это отправлялось клиенту??

2. iNeeXT (13.11.2014 / 15:42)
Там где идет вставка должен быть код, который отправляет данные клиенту.

Или можешь сделать код мониторинга, который будем проверять наличие новых строк и отправлять клиенту.

3. Вусал (13.11.2014 / 19:14)
2. iNeeXT, у меня сайт в двух версиях... Полная, и мобильная... Так вот, в мобильной не получится добавить запросы через сокет... Поэтому нужно какой то скрипт, который будет сам.ждать вставки новой записи в таблице, и тут же отправит клиенту который сидит с полной версии сайта

Добавлено через 00:45 сек.
iNeeXT (13 Ноября 2014 / 15:42)
Или можешь сделать код мониторинга, который будем проверять наличие новых строк и отправлять клиенту.
Как именно?

4. iNeeXT (13.11.2014 / 20:00)
Ты написал "вставке новых строк", сделай там код, который отправляет данные клиенту.

5. Кевин Митник (13.11.2014 / 20:02)
можно делать лонг-пул запрос. тогда не нужно столько запросов к базе

6. Дмитрий (13.11.2014 / 20:57)
5. Кевин Митник_HHTeam, длинный запрос нагружает сервер.

7. shilo (13.11.2014 / 22:07)
Я прям представляю себе это... 100 человек подключаются, получают обновления... 100 одновременных соединений к MySQL, это много

8. Кевин Митник (13.11.2014 / 22:27)
6. dima.london, ну, node.js все подряд не используют) если уюзает, значит это допустимо)

Добавлено через 02:28 сек.
или же можно сделать триггер, который будет куда-то сваливать ивенты. а клиент в свою очередь через каждые несколько сек. смотрит туда.

9. Вусал (14.11.2014 / 02:42)
iNeeXT (13 Ноября 2014 / 20:00)
Ты написал "вставке новых строк", сделай там код, который отправляет данные клиенту.
В мобильной версии вставка осуществляется в php... Туда не добавишь такой код, чтоб на клиентов сокета отправились данные

Добавлено через 02:22 сек.
Кевин Митник_HHTeam (13 Ноября 2014 / 22:27)
6. dima.london, ну, node.js все подряд не используют) если уюзает, значит это допустимо)

Добавлено через 02:28 сек.
или же можно сделать триггер, который будет куда-то сваливать ивенты. а клиент в свою очередь через каждые несколько сек. смотрит туда.
Вот как раз интересно то, можно сделать чтоб юзер не лез куда то, а просто, в базе новая строка, шлем клиентам которые подключены через сокеты

10. Вусал (14.11.2014 / 09:55)
Ну или таклй вопрос... Это же не будет нагрузкой на сервере, если каждые две секунды будет запрос к базе, на проверку новых сообщений...????

Ведь на node.js не играет роли сколько клиентов, запрос то один будет...И потом будет рассылать всем данные...

11. iNeeXT (14.11.2014 / 13:46)
Будет конечно, проведи тесты и посмотри какова нагрузка.

Потом делай выводы.

12. Вусал (14.11.2014 / 17:35)
11. iNeeXT, и как быть тогда...
Возможно ли как то реализовать такое, чтоб юзер получали ответ от сокета при изменении таблицы?

13. Вусал (15.11.2014 / 02:00)
iNeeXT (14 Ноября 2014 / 13:46)
Будет конечно, проведи тесты и посмотри какова нагрузка.

Потом делай выводы.
если делать запрос внутри
io.sockets.on('connection', function (socket) {
//mysql
}
то запросов будет столько же, сколько и клиентов...

но если сделать запрос в базу до подключения, то запрос будет выполнять один раз в заданное время

14. iNeeXT (15.11.2014 / 15:12)
Да, но, делать запросы в заданное время нужно, когда на сайте есть хотя-бы один активный клиент.

P.S. я не проверяю темы, в которых пишу, поэтому лучше написать в ЛС.

URL: https://visavi.net/topics/41562