Каким образом в NodeJS я могу понять — что таблица изменилась (и уведомить клиента далее)?
Т.е. про само соединение клиент/сервер, я понимаю, как это делается, и как мне отправлять запросы.
Но как на сервере запустить функцию которая будет определять, что таблица изменилась, и сразу слать инфу клиенту? Т.е. как мне отследить сам факт изменения таблицы.
P.S.: хочу способ без использования таймеров и чтения/сравнения со старыми данными по таймеру, у меня приходит на ум единственный способ - это отслеживания всех INSERT/UPDATE/DELETE (и далее уже после них сразу слать инфу, что таблица изменилась), но а если я вручную данные поменяю в SQL редакторе это уже не сработает :)
у вас же модификациями бд заведует только нода? если да, то в код, где вы это делаете закиньте отправку события добавляете отправку события myemitter('emit'..... и вешаете myemitter.on('emit'... обработка события.
Доки для почитать тут
lxfr: не стоит ничего апдейтить руками, или придется создавать таблицу изменений (куда нужно будет писать кучу сылок на добавленные записи), к которой цеплять как раз через сетинтервал слушалку, которая будет при получении списка делать выборку новых данных, раздавать информацию пользователям и очищать список под раздачу. это не лучший путь в вашем случае.
Как уже подсказали выше, rethinkDB - идеальный вариант
Но если принципиальны реляционки, то пишем триггеры на нужные таблицы, которые складывают отдельно нужные изменения, а скрипт периодически их чекает
Периодически, это когда используется таймаут, т.е., по таймеру? :) Мне этот вариант не подходит, нужен мгновенный сию секундный отклик на любое изменений в таблице, чтобы клиента мгновенно это увидел, а не раз в 5 секунд, скажем, даже если эти 5 секунд на сервере отсчитываются. И желательно если я даже руками в эту таблице влезу.