Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 发送2个http并发请求_Node.js - Fatal编程技术网

Node.js 发送2个http并发请求

Node.js 发送2个http并发请求,node.js,Node.js,我需要测试一个应用程序的web api。测试用例是,如果两个simular请求同时到达web应用程序的两个节点,它将返回erorr。所以我需要在web应用程序的两个独立节点上同时发送两个请求。我知道如何发送1个请求以及如何轮流发送请求。 以下是我提出的请求示例: var XMLHttpRequest=require(“XMLHttpRequest”).XMLHttpRequest; var xhr=new XMLHttpRequest(); var url=“url”; xhr.open(“P

我需要测试一个应用程序的web api。测试用例是,如果两个simular请求同时到达web应用程序的两个节点,它将返回erorr。所以我需要在web应用程序的两个独立节点上同时发送两个请求。我知道如何发送1个请求以及如何轮流发送请求。 以下是我提出的请求示例:

var XMLHttpRequest=require(“XMLHttpRequest”).XMLHttpRequest;
var xhr=new XMLHttpRequest();
var url=“url”;
xhr.open(“POST”,url,true);
setRequestHeader(“内容类型”、“应用程序/json”);
xhr.onreadystatechange=函数(){
如果(xhr.readyState==4&&xhr.status==200){
var json=json.parse(xhr.responseText);
log(json.result);
}
};
var data=JSON.stringify();

发送(数据)首先,我的观点是,我会使用调用您想要拉入web应用程序的资源

我认为它需要的样板文件比XMLHttpRequest少

另一方面,我不清楚您是否想检查您的web应用程序是否向同一资源发出两个请求,或者是否想知道如何知道和处理后端收到克隆请求时的情况

在第一种情况下,您可以使用类似的方法避免发出请求,直到您得到响应。但也许这对你的项目来说是一个很大的依赖

另一种方法是禁用用户输入(如发出请求的按钮),直到您有响应为止

但是,如果您的问题是如何在后端应用程序中知道来自同一客户端的重复请求,则这将取决于您的后端体系结构。例如,如果您有一个负载平衡器和许多后端服务,或者您只有一个面向公共internet的nodejs后端,等等

我建议您以某种方式持久化客户机数据,其中一些数据是(内存、数据库或其他),比如IP、会话ID,或者一些有助于了解谁在进行API调用的数据;然后检查是否已经有对同一资源的持续请求,以便做出相关响应。一旦调用完成,您就可以将其从持久层中移除

也许您希望看到一些代码片段,但我希望这对您有用

在评论后编辑:


我有host1.webapp/api/methodX和host2.webapp/api/methodX。简单地说我 必须同时发送2个请求(1个用于主机1,1个用于主机2)。我 不需要等待主机1的响应,然后将请求发送到 host2,我需要把它们一起发送给不同的主机。而我 不关心响应时间/请求处理时间等


如果我使用curl,它看起来像:curl request1&request2


在这种情况下,这取决于要测试的行为。不能使用同一个XMLHttpRequest对象进行两个AJAX调用。如果我是你,我会提出两个要求,也许用承诺来包装它们,然后使用这种方法。然后检查返回值上发生了什么。另一种(但更复杂的方式)应该是让一个服务工作者拦截所有http流量,在那里你可以看到API调用是否按照你的意愿进行。

首先,我的观点是,我会使用调用你想要拉到你的web应用的资源

我认为它需要的样板文件比XMLHttpRequest少

另一方面,我不清楚您是否想检查您的web应用程序是否向同一资源发出两个请求,或者是否想知道如何知道和处理后端收到克隆请求时的情况

在第一种情况下,您可以使用类似的方法避免发出请求,直到您得到响应。但也许这对你的项目来说是一个很大的依赖

另一种方法是禁用用户输入(如发出请求的按钮),直到您有响应为止

但是,如果您的问题是如何在后端应用程序中知道来自同一客户端的重复请求,则这将取决于您的后端体系结构。例如,如果您有一个负载平衡器和许多后端服务,或者您只有一个面向公共internet的nodejs后端,等等

我建议您以某种方式持久化客户机数据,其中一些数据是(内存、数据库或其他),比如IP、会话ID,或者一些有助于了解谁在进行API调用的数据;然后检查是否已经有对同一资源的持续请求,以便做出相关响应。一旦调用完成,您就可以将其从持久层中移除

也许您希望看到一些代码片段,但我希望这对您有用

在评论后编辑:


我有host1.webapp/api/methodX和host2.webapp/api/methodX。简单地说我 必须同时发送2个请求(1个用于主机1,1个用于主机2)。我 不需要等待主机1的响应,然后将请求发送到 host2,我需要把它们一起发送给不同的主机。而我 不关心响应时间/请求处理时间等


如果我使用curl,它看起来像:curl request1&request2


在这种情况下,这取决于要测试的行为。不能使用同一个XMLHttpRequest对象进行两个AJAX调用。如果我是你,我会提出两个要求,也许用承诺来包装它们,然后使用这种方法。然后检查返回值上发生了什么。另一种(但更复杂的方式)应该是让服务工作者拦截所有http流量,在那里你可以看到API调用是否按照你的要求进行。

hmm让我解释得更好一点:我有host1.webapp/API/methodX和host2.webapp/API/methodX。简单地说,我必须同时发送2个请求(1个用于主机1,1个用于主机2)。我不需要等待主机1的响应,然后将请求发送到主机2,我需要发送