我正在开发一个棱角分明的应用程序,它将使大约一千人同时连接到订票。我只想让它们中的"XYZ“同时访问对角分量。其他人会看到一个“等候室”的组成部分,直到轮到他们。我把整件事安排成这样:
充分发挥作用。
现在的问题是,我想创建一种“优先级”系统,因为,如果你只是刷新一下,你可能会很幸运,即使你很快就到了,还有人从1990年起就在等待。所以我引入了一个“优先权”系统。当用户进行第一次http调用时,如果不允许用户,服务器将创建时间戳并将其推入数组中。
const timestamps = []
.
.
.
// this below is in http get req
Connessione.countDocuments({},(err,count)=>{
if(count<=nmax){
console.log("Ok")
res.status(200).json({allowed: true})
}
else{
const timestamp = req.params.timestamp;
timestamps.push(timestamp);
console.log("Semo troppi")
res.status(401).json({allowed: false})
}
});这样做的目的是侦听db的更改,并且当数据库中只有XYZ-1时。打个电话到第一张时间戳的角度正面,就会说:“嘿,如果你想我们做完的话,你可以去。”然后给他解锁进入注册部分。
问题是我不能每一秒连续请求http,直到有一个自由的地方.有什么方法可以在服务器上发送请求,当服务器说可以的时候,调用角并说“嘿,伙计,你可以走了!”希望你能理解我的问题。如果没有在评论中问我。提前感谢
发布于 2019-02-10 16:56:20
甚至在一开始我对套接字也有问题,所以我将尝试以一种简单的方式解释这个概念,每当您编写一个API或Endpoint时,您就有一个单向连接,即您将request发送到服务器,它返回一些response,如下所示。
Event 1:
(Client) -> Request -> (Server)
Event 2:
(Client) <- Response <- (Server)对于API,如果没有请求,就无法获得响应。
为了克服这个问题,到目前为止,我可以想到两种可能的方法。
(Server) <-> data <-> (Client)
这意味着您可以通过两种方式传递数据,客户机到服务器,服务器到客户端。因此,每当发生事件(在数据库中添加或更新某些数据),就可以向客户端发出或广播它,客户端可以监听并接收该套接字。
在你的例子中,因为它是两个连接,你可以从角度发出数据,我在底部附加了几个链接。请看一下。
setInterval(ajaxCall, 5000); //5000 MS == 5 seconds
function ajaxCall() {
//do your AJAX stuff here
}链接:
https://stackoverflow.com/questions/54618231
复制相似问题