Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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 发送http请求并接收推送数据_Node.js_Push - Fatal编程技术网

Node.js 发送http请求并接收推送数据

Node.js 发送http请求并接收推送数据,node.js,push,Node.js,Push,我希望我的Node.js代码向另一台服务器发送http请求。使用下面的代码可以很好地工作。我的问题是,有问题的服务器应该推送数据,并且在请求之后立即关闭连接 例如,如果使用浏览器打开页面,则会从服务器获取推送数据,并且浏览器会刷新页面。问题是:如何在我的节点服务器中获取http请求之后的推送请求(来自另一台服务器)?我尝试使用“保持活动”保持连接活动,但这并没有改变任何事情 示例代码: 您的问题中有一些含糊不清的地方,涉及到更新实际上是如何在浏览器中完成的。我们无法告诉您如何复制浏览器操作,除非

我希望我的Node.js代码向另一台服务器发送http请求。使用下面的代码可以很好地工作。我的问题是,有问题的服务器应该推送数据,并且在请求之后立即关闭连接

例如,如果使用浏览器打开页面,则会从服务器获取推送数据,并且浏览器会刷新页面。问题是:如何在我的节点服务器中获取http请求之后的推送请求(来自另一台服务器)?我尝试使用“保持活动”保持连接活动,但这并没有改变任何事情

示例代码:
您的问题中有一些含糊不清的地方,涉及到更新实际上是如何在浏览器中完成的。我们无法告诉您如何复制浏览器操作,除非您告诉我们实际发生了什么操作

HTTP是一种请求/响应协议,这意味着如果浏览器未首先打开指向服务器的链接(带有请求),服务器无法“推送”到浏览器

对我来说,这听起来像是你想要为一个你不拥有的网页创建一个自定义客户端,因此你必须构建你的应用程序,使其表现得像一个网页,因为你无法控制为该网页服务的服务器。对吗

(顺便说一句,许多网站的服务条款禁止您尝试开发的使用类型。请验证您是否在应用程序的范围内)

如果是这样的话,那么你要做的就是在页面加载后找出浏览器是如何连接到服务器的。有几种方法可以实现这一点:

1) 页面加载javascript,该javascript定期在计时器上发出新的AJAX请求。如果是这样的话,那么你很幸运,你所要做的就是捕获AJAX请求的结构,然后在你的应用程序中,在同一个计时器上发出一个新的HTTP请求

2) 该页面向服务器打开一个websocket,该套接字接受来自服务器的传入数据。这有点不那么直截了当,但是有很多库(socket.io)可以实现这种连接


作为一个单独的问题,对于这两种方法中的任何一种,站点可能会为浏览器传递凭据以返回并成功建立这些连接,如果是这样,您必须能够获取这些凭据并使用它们。

来自服务器的数据位于区块

res.on('data', function (chunk) {
HTTP被认为是发送数据并关闭连接的。 如果您正在运行server.com,则可以重写应用程序以保持连接打开(如普通套接字)。
但是,正如其他人建议的那样,我认为您可以使用其他技术,如web套接字或长轮询。

服务器推送是如何实现的?这个问题让人觉得它可能是长轮询,这与您介绍的两个选项不同。长轮询与选项1仅略有不同,即忽略计时器,只需在最后一次响应时触发一个新请求。这份清单并不全面,只是引导他走向正确的方向,因为没有足够的信息来做其他事情。
res.on('data', function (chunk) {