我想使用 nodejs 以刷新率显示来自 MySQL 的数据。我已经完成了以下编码并获得了结果。但问题是,如果我在浏览器的一个选项卡中打开 localhost:8000/?id=1,它会显示来自 MySQL 的 id 1 数据,但是如果我在另一个选项卡上打开 localhost:8000/?id=2,它会显示以下数据id 2 但同时,第一个选项卡也开始显示 id 2 的数据。我需要在不同选项卡的 URL 中显示来自 MySQL 的特定 ID 的数据。
在 server.js 我写
var app = require('http').createServer(handler), 网址 = 要求(“网址”), io = require('socket.io').listen(app), fs = 要求('fs'), mysql = 要求('mysql'), 连接数组 = [], 连接 = mysql.createConnection({ 主机:'本地主机', 用户:'根', 密码: '', 数据库:'nodetest' }), POLLING_INTERVAL = 3000, 轮询定时器; 连接.连接(功能(错误){ 控制台日志(错误); }); app.listen(8000); 变量编号; 函数处理程序(req,res){ var url_parts = url.parse(req.url, true); 变种查询 = url_parts.query; 如果(查询.id){ id = 查询.id; 控制台.log(id); } fs.readFile('client.html', 功能(错误,数据){ 如果(错误){ 控制台日志(错误); res.writeHead(500); return res.end('加载client.html时出错'); } res.writeHead(200); res.end(数据); }); } var pollingLoop = 函数() { var query = connection.query('SELECT * FROM users WHERE id = ' + id), 用户 = []; query.on('错误', 功能(错误){ 控制台日志(错误); 更新套接字(错误); }).on('结果', 功能(用户){ users.push(user); })。结束', 功能() { 如果(connectionsArray.length){ pollingTimer = setTimeout(pollingLoop, POLLING_INTERVAL); 更新套接字({ 用户:用户 }); } }); }; io.sockets.on('连接', 功能(套接字){ console.log('连接数:' + connectionsArray.length); 如果(!connectionsArray.length){ 轮询循环(); } socket.on('断开连接', 功能() { var socketIndex = connectionsArray.indexOf(socket); console.log('socket = ' + socketIndex + '断开连接'); if (socketIndex >= 0) { connectionsArray.splice(socketIndex, 1); } }); console.log('新的套接字已连接!'); connectionsArray.push(socket); }); var updateSockets = 函数(数据){ data.time = 新日期(); 连接数组.forEach(函数(tmpSocket){ tmpSocket.volatile.emit('通知',数据); }); };
在client.html中我写了
<html>
<head>
<script src="socket.io/socket.io.js"></script>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
var socket = io.connect('http://localhost:8000');
socket.on('notification',
function(data) {
var usersList = "<div>";
$.each(data.users,
function(index, user) {
usersList += "<div><p><span style='width:100px;float:left;text-align:center'>Name :</span>" + user.name + "</p></div>" + "<div><p><span style='width:100px;float:left;text-align:center'>First Name :</span>" + user.flane + "</p></div>" + "<div><p><span style='width:100px;float:left;text-align:center'>Last Name :</span>" + user.lname + "</p></div>";
});
usersList += "</div>";
$('#container').html(usersList);
});
</script>
</head>
<body>
<div id="container">Loading ...</div>
</body>
</html>