我正在构建一个有角度的应用程序,它将使大约一千人同时连接以预订车票。我只希望其中的“ XYZ”在注册Angular组件中同时访问。其他人将看到“等候室”组件,直到轮到他们了。 我将整个过程设置如下:
完全工作。
现在的问题是,我想创建一种“优先”系统,因为像这样,即使您刚刚刷新,也可能很幸运并且可以访问,即使您很快就到了并且有人在等待从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})
}
});
这个想法是听数据库的变化,以及当数据库中只有XYZ-1时。打电话给第一个时间戳记的前端,对他说:“嘿,如果要完成,您可以走了。”然后解锁他对注册组件的访问权限。
问题是我无法从角度出发每秒发出连续的http请求,直到有空闲的地方为止... 是否有任何方法可以在服务器上发送请求,并且服务器说“确定”时,调用angular并说“嘿,伙计。你可以去!”? 希望你理解我的问题。如果没有在评论中问我。 预先感谢
答案 0 :(得分:0)
即使一开始我在使用套接字时遇到麻烦,所以我都会尝试以一种简单的方式来解释该概念,无论何时编写API
或Endpoint
,您都有一种单向连接,即发送request
发送到服务器,然后返回一些response
,如下所示。
Event 1:
(Client) -> Request -> (Server)
Event 2:
(Client) <- Response <- (Server)
对于API,如果没有请求,您将无法获得响应。
到目前为止,要克服此问题,我可以想到两种可能的方法。
(Server) <-> data <-> (Client)
这意味着您可以通过两种方式(客户端到服务器和服务器到客户端)传递数据。因此,只要发生事件(在数据库中添加或更新了一些数据),事件就可以将其发射或广播给客户端,并且客户端可以监听套接字并接收它。
在您的情况下,因为这是两个连接,所以可以从angular和 我在底部附加了一些链接。请看看。
setInterval(ajaxCall, 5000); //5000 MS == 5 seconds
function ajaxCall() {
//do your AJAX stuff here
}
链接: