Я пишу веб-сокет-приложение, которое должно передавать данные в мой php-файл всякий раз, когда изменяется запись в базе данных. Прямо сейчас, в качестве базового начала, я установил интервальный таймер и отправляю каждые 20 секунд клиенту, независимо от того, было ли изменение или нет (поля предназначены только для игры — пароль …):
ServerSide:
setInterval(pushData, 20000);
function pushData() {
connection.query('SELECT * FROM testtable WHERE username="michael"', function(err,rows,fields) {
if (err) throw err;
io.emit('newdata', rows[0].password);
});
}
КЛИЕНТ PHP SCRIPT:
socket.on('newdata', function(msg) {
var data = document.getElementById('dataentries');
data.innerHTML = msg;
});
Каков наилучший подход для запроса и обновления только в случае изменения записи в БД? Могу ли я установить триггер из mysql в node.js?
Самый простой и законный способ сделать это — сначала запросить данные, проверить, изменились ли они, затем внести изменения и отправить сообщение клиенту. Если это не изменилось, не делайте обновления.
Предполагая, что вы используете ORM
в вашем серверном приложении — я бы поместил логику вещания в POST_SAVE
крюк.
Если вы не являетесь владельцем приложения, но имеете доступ к конфигурации базы данных — вот хитрость.