我想给一个唯一的ID (这两个客户端都知道),然后将相关数据存储在数据库中或直接存储在服务器RAM中。有待处理的请求(请求 - 等待)对服务器不利,因为它必须保持越来越多的开放连接,并且对客户端不利,因为他看到一个旋转的圆圈而不知道发生了什么。我宁愿做到以下几点:
1. client sends request with data
2. data gets stored, a *please wait* is returned
3. the page reloads all two seconds
4. if all the datas there, return the data
5. if not, return *please wait* and goto 3
一个pseudoimplementation应该是这样的:
var processes = new Map();
function Process(){
do {
var id = Math floor(Math.random()*10**10);
}while(processes.has(id));
this.id = id;
processes.set(id,this);
}
Process.prototype.pending = function(res){
if(this.first && this.second)
return res.end(this.first + this.second);
res.end(`
<html>
<body>
Please wait...
<script> setTimeout(location.reload.bind(location),2000);
</script>
</body>
</html>`);
};
//the routing
var app = Express();
app.get("/create",function(req,res){
var p = new Process();
req.end(p.id);
});
app.get("/first/:id/:data",function(req,res){
var p = processes.get(req.params.id);
if(!p) return res.end("id not found");
p.first = req.params.data;
p.pending(res);
});
app.get("/second/:id/:data",function(req,res){
var p = processes.get(req.params.id);
if(!p) return res.end("id not found");
p.second = req.params.data;
p.pending(res);
});
我会说,从两个客户期待准同时要求*是*一个烂摊子。 – Bergi