我遇到的问题是我通过节点mysql& amp;从数据库中提取数据通过socket.io表达并传递它......但是我遇到了一个问题。
所有用户都使用相同的数据进行更新,而不是每位用户使用唯一数据。
例如:
如果用户A刚刚登录,他可以看到他所有的帐户详细信息。但是当用户B可以在他看到所有细节后立即登录......但它会更新用户A的详细信息以显示用户B的详细信息。
我正在努力确保用户A只能看到自己的用户B和用户B.
我已经尝试了很多东西来阻止这种情况通过JQuery发生,但似乎无法找到解决方案。
下面我将代码修改为基本示例:
HTML
print(paste("number of objects: ",count))
##[1] "number of objects: 4"
服务器端
<a href=""><span id="id-val">User A</span></a>
<a href=""><span id="user-val"></span></a>
客户端
server = http.createServer(app),
io = require('socket.io').listen(server);
function SQLuserData(userval) {
connection.getConnection(function (err, connection) {
connection.query('SELECT val FROM test WHERE name= ?;',
[userval],
function (err, rows) {
var accountval = rows[0]['val'];
if (accountval) {
console.log("Val : " + accountval);
UserVal(accountval);
} else {
console.log("Error | Val: " + err);
}
});
connection.release();
});
}
//Socket.io connection socket
io.sockets.on('connection', function (socket) {
socket.on('sqluser', function (userval) {
SQLuserData(userval);
});
});
//Pass val client side.
function UserVal(accountval) {
io.sockets.emit("valsocket", accountval);
}
有没有人有任何建议或可能的解决方案?
答案 0 :(得分:1)
我认为您希望避免向所有连接的用户发布帐户数据,这就是Socket.IO的emit
方法所做的事情。客户端向服务器发送GET
请求并将帐户详细信息回复给单个客户端可能会更好。
如果您选择通过Socket.IO使用HTTP请求,以下是一些资源:
答案 1 :(得分:0)
所以基本上你的代码的问题是你没有区分用户。由于您是通过套接字发送数据,因此需要注意发送数据的对象。 您可以使用socketio-auth创建一种身份验证。然后将数据发送为socket.emit(event,data);其中socket是每个用户的单个对象。您还可以使用基于cookie的会话来帮助您。