我有一个node.js代码,它基本上在UDP套接字上侦听来自网页的不同请求,并调用一个函数来查询DynamoDB并将结果发送回相应的调用网页(根据远程IP和端口)识别每个请求。)
代码如下所示:
function qryDynamoDB(qry_condition, remoteIP, remotePort) {
var qryParams = {
TableName: "customer1",
KeyConditionExpression: "qry_condition",
};
docClient.query(qryParams, function (err, data) {
if (err) {
console.log(err);
}
else {
var qry = JSON.stringify(data);
server.send(qry, 0, qry.length, remotePort, remoteIP, function (err, bytes) {
if (err) {
throw err;
}
});
}
});
}
// UDP Server starts
server.on('listening', function () {
var address = server.address();
console.log('UDP Server listening on ' + address.address + ":" + address.port);
});
server.on('message', function (message, remote) {
// do a query
qryDynamoDB('qry_condition', remote.address, remote.port);
});
我的问题是这个代码在多个(几乎)同时请求方面是安全的。例如,我想知道Request#1
是否到达并且代码执行查询,然后Request#2
也会到达并且代码发送 2nd 查询。但如果出于某种原因,最后一个查询首先完成(例如 qry 1 比 qry 2 更复杂) ,这个结果会被发送回正确的远程IP和端口(来自发送Request#2
的网页)而不是第一个?
我不了解node.js的内部结构及其处理方式,所以我担心会发生这种情况,然后将结果混合起来。
我将不胜感激任何澄清。