如何使用 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!');
});
});
正在研究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!');
});
});