【发布时间】:2016-04-22 10:22:32
【问题描述】:
伙计们,我从事网络项目已经很长时间了。我现在正在创建一个实时通知系统,我正在使用node js + socket io。我很高兴在stackoverflow 上的专家的帮助下我能够在不同的 port 上工作 apache server 和 nodejs server 一起为一个完整的 Web 应用程序工作。好的,现在让我们进入正题。
与我的逻辑人员一起,我试图通过两个步骤进行实时通知:-
1) 首先,用户通过客户端页面连接到套接字,然后是 emit 连接事件,由我们的 nodejs 服务器文件处理。
2) 在检测到用户已连接到套接字后,我在 nodejs 生成的服务器文件中执行了一些 mysql 提取,例如:-
// ....all module are presented here above...
io.sockets.on('connection', function(client) {
var pool = mysql.createPool({
connectionLimit: 10,
host: "localhost",
user: "root",
password: "",
database: "mydatabase"
});
pool.getConnection(function(err, connection) {
var queryString = "Select * from table_one";
connection.query(queryString, function(error, results) {
if (error) {
throw error;
} else {
console.log("New client !");
io.sockets.emit('u_d', results);
}
});
connection.release();
});
});
在上面我使用了nodejs mysql 模块。它从table_one 的json 数据类型上获取所有数据,如下图所示。
您可以看到我在json 类型上获取了我的数据。是否可以让我的json 数据以这样的正确格式获取:-
{
"result": [{
"id": "2",
"user": "hari061",
"pic": "img.jpg"
},
{
"id": "3",
"user": "ram061",
"pic": "nature.jpg"
}
]
}
该 json 数据将在这里交给我的客户端:-
var socket = io.connect('http://localhost:3000');
socket.on('u_d', function(data) {
$('.display_noti').append($('<li style="margin-bottom:10px;margin-left:10px; margin-right:10px;">').text(data));
});
毕竟我发现了两个问题:-
1)在用户mysql 的每个连接中获取数据。(这意味着我的用户每次都应该连接一个套接字以进行新的更新)。这不是实时的,我的意思是页面重新加载只能使该用户连接到一个套接字然后只有它会显示他/她的新更新。
2) 我发现mysql 获取的数据是以json 格式检索的。我想控制适合我客户端的json 格式的结果。
我该如何解决这两个问题?
【问题讨论】:
标签: php mysql json node.js sockets