如何使用 express 和 socket.io 加载 mysql 查询结果?

how to load a mysql query result using express and socket.io?

正在研究node和express。我有一个 table 的库存项目,我想在我的网络浏览器上查看它,这就是我使用 socket.io 和 express 的原因。

但是当有连接时我无法加载数据。这是我的代码:

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 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();

/**example from express

connection.connect();
connection.query('SELECT * FROM inventory', function(err, rows, fields){
    if(err) throw err;
    console.log(rows);
});
connection.end();

**/

function loadList() {

    connection.query('SELECT * FROM inventory', function(err, rows, fields){
        if(err) throw err;
        return rows;
    });

}

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

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

    socket.on('inventory list', function(data){

        return 'hello world'; // i pass a simple return to test if this can return something

        /*
        connection.query('SELECT * FROM inventory', function(err, rows, fields){
            if(err) throw err;
            console.log(rows);
        });
        */

    });

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

});

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

index.html

<!DOCTYPE>
<html>
    <head>
        <title>Invertory Sample</title>
        <link rel="stylesheet" type="text/css" href="/bower_components/bootstrap/dist/css/bootstrap.min.css" />
        <link rel="stylesheet" type="text/css" href="/bower_components/font-awesome/css/font-awesome.min.css" />
    </head>
    <body>
        <p>sample</p>
        <p class="test"></p>
        <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) { console.log(data); //i console but no response. });
            }

        </script>
    </body>
</html>

你能帮帮我吗?我对 nodejs 非常陌生,但我有一些基本的了解。或者你能为我提供一个很好的例子吗?

谢谢。

在客户端和服务器中,您正在侦听一个事件('inventory list'),但没有人发出此事件。

如果你想在连接时将列表发送到客户端,你可以在服务器上尝试这样的事情:

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

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

    socket.emit('inventory list', { list: 'mylist' });

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

http://socket.io/docs/server-api/