Javascript 如何使用NodeJS和Socket.io创建基于数据库更新的实时事件触发器?

Javascript 如何使用NodeJS和Socket.io创建基于数据库更新的实时事件触发器?,javascript,php,mysql,node.js,socket.io,Javascript,Php,Mysql,Node.js,Socket.io,我想实现一个实时更新。我使用MySQL作为我的数据库,在我的过程中,我已经在我的页面中显示了数据库中的数据。我的问题是,例如,我在数据库中编辑了一些内容,Nodejs和Socket.io是否可以自动更新我页面中的视图 以下是我目前的代码: server.js var express = require('express'); var app = express(); var mysql = require('mysql'); var http = require('http').Server(a

我想实现一个实时更新。我使用MySQL作为我的数据库,在我的过程中,我已经在我的页面中显示了数据库中的数据。我的问题是,例如,我在数据库中编辑了一些内容,
Nodejs
Socket.io
是否可以自动更新我页面中的视图

以下是我目前的代码:

server.js

var express = require('express');
var app = express();
var mysql = require('mysql');
var http = require('http').Server(app);
var io = require('socket.io')(http);
var port = process.env.PORT || 8000;
var jQuery = require('jQuery');

var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'node'    
});

app.use(express.static(__dirname + '/public'));
app.use('/bower_components', express.static(__dirname + '/bower_components'));

app.get('/', function(req, res) {
    res.sendFile(__dirname + '/index.html');
});

connection.connect();

function loadList(callback) {

    connection.query('SELECT * FROM inventory', function(err, rows, fields){

        if(err) return callback(err);

        return callback(null,rows);

    });

}

io.on('connection', function(socket){

    console.log('A user is connected!!');

    loadList(function(err, product_list){
        socket.emit('inventory list', {list: product_list});
    });

    socket.on('disconnect', function() {
        console.log('user disconnected!');
    });

});

http.listen(8000, function() {
    console.log('Listening on ' + port);
});
index.html

<div class="container">

    <h4>Stock List</h4>

    <table id="list" class="table table-striped table-hover table-bordered">
        <thead>
            <tr>
                <td>ID</td>
                <td>Product Name</td>
                <td>Price</td>
                <td>Quantity</td>
                <td>Status</td>
                <td>Date Added</td>
                <td></td>
            </tr>
        </thead>
        <tbody></tbody>
    </table>
</div>

<script type="text/javascript" src="/socket.io/socket.io.js"></script>
<script type="text/javascript" src="/bower_components/jquery/dist/jquery.min.js"></script>
<script type="text/javascript">

    try {
        var socket = io.connect('http://127.0.0.1:8000');
        //console.log(socket);
    }catch(e) {
        console.log('ERROR OCURRED: ' + e);
    }

    if(socket !== undefined) {
        socket.on('inventory list', function(data){

            var html = '';

            $.each(data.list, function(k, v){
                html += '<tr>';
                html += '<td>' + v.inventory_id + '</td>';
                html += '<td>' + v.product_name + '</td>';
                html += '<td>' + v.price + '</td>';
                html += '<td>' + v.quantity + '</td>';
                html += '<td>' + v.status + '</td>';
                html += '<td>' + v.date_added + '</td>';
                html += '<td><a href="">Edit</a></td>';
                html += '</tr>';
            });

            $('#list tbody').html(html);

        });
    }

</script>

存货清单
身份证件
品名
价格
量
地位
添加日期
试一试{
var socket=io.connect('http://127.0.0.1:8000');
//控制台日志(套接字);
}捕获(e){
console.log('发生错误:'+e);
}
if(套接字!==未定义){
socket.on('inventory list',函数(数据){
var html='';
$.each(数据列表、函数(k、v){
html+='';
html+=''+v.inventory\u id+'';
html+=''+v.product_name+'';
html+=''+v.price+'';
html+=''+v.quantity+'';
html+=''+v.status+'';
html+=''+v.date\u added+'';
html+='';
html+='';
});
$('#list tbody').html(html);
});
}
你能给我举个好例子吗? 我还发现了这个库:


它看起来不错,但没有与MySQL集成。

您是更新上述数据库的人吗?如果是的话,您可以通过在数据库上触发socket事件来节省相当复杂的任务,因为我直接从mysql表手动编辑数据。你能给我一些关于基于数据库更新的套接字事件的参考吗?你可以定期检查数据库,并在发生时只发送不同的数据。不知道你是否找到了解决方案,因为我遇到了完全相同的问题。。。