Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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
为什么my node.js Web服务器从浏览器接收多个请求?_Node.js_Sockets_Http_Browser_Webserver - Fatal编程技术网

为什么my node.js Web服务器从浏览器接收多个请求?

为什么my node.js Web服务器从浏览器接收多个请求?,node.js,sockets,http,browser,webserver,Node.js,Sockets,Http,Browser,Webserver,Hy,我正在制作一个简单的http服务器,其中包含node.js原生网络模块的套接字,该模块运行在“localhost:4000”上,只提供“hello,world!”网页 服务器运行正常,在我的服务器上,我使用console.log()进行了一些调试,包括:“侦听连接”、“客户端连接”、“接收数据”和“发送数据” 我的问题是当我打开浏览器打开网页时,我得到了3个连接:1-“GET/HTTP/1.1”2-“GET/favicon.ico HTTP/1.1”,第三个连接不请求任何东西,只连接到服务

Hy,我正在制作一个简单的http服务器,其中包含node.js原生网络模块的套接字,该模块运行在“localhost:4000”上,只提供“hello,world!”网页

服务器运行正常,在我的服务器上,我使用console.log()进行了一些调试,包括:“侦听连接”、“客户端连接”、“接收数据”和“发送数据”

我的问题是当我打开浏览器打开网页时,我得到了3个连接:1-“GET/HTTP/1.1”2-“GET/favicon.ico HTTP/1.1”,第三个连接不请求任何东西,只连接到服务器

以下是我的Web服务器代码:

const net=require('net')//导入网络模块
const ip=“localhost”//连接的ip地址
常数端口=4000//连接端口
const response=“HTTP/1.1 200正常\n”+
“内容类型:text/html;字符集=UTF-8\n”+
“内容编码:UTF-8\n”+
“接受范围:字节\n”+
“连接:保持活动\n\n”+
“你好,世界!”//“网页”http响应
const server=net.createServer()//创建服务器
监听(端口,ip)//启动服务器
server.on(“侦听”,()=>{
log(“-侦听连接”);
}); //服务器上调用的事件开始侦听连接
打开服务器(“连接”,handleConnection)//客户端已连接时调用的事件
函数handleConnection(socket){//此回调在客户端连接时运行
console.log(“(“+socket.remoteAddress+”:“+socket.remotePort+”)已连接”);
socket.on(“data”,(data)=>{//当客户端向服务器发送数据时调用的事件
console.log(“-从:“+socket.remoteAddress+”:“+socket.remotePort”接收的数据);
log(data.toString());
write(response,()=>{//将响应(网页)发送到客户端
console.log(“-发送响应:“+socket.remoteAddress+”:“+socket.remotePort”)
socket.end();//关闭客户端连接
});
});
socket.on(“close”,()=>{//当客户端连接关闭时调用的事件
console.log(“-socketclose”);
});
}
这是浏览器连接时的console.log消息:

-Listening connections
(127.0.0.1:57306) connected
-received data from: 127.0.0.1:57306
-sending response: 127.0.0.1:57306  
-socket close
(127.0.0.1:57308) connected
-received data from: 127.0.0.1:57308
-sending response: 127.0.0.1:57308  
-socket close
(127.0.0.1:57309) connected
服务器仍在侦听(因为它只有在收到请求后才关闭),但没有更多的请求,而且如果我刷新页面,连接似乎会在它停止的地方继续,重新使用之前活动的最后一个套接字连接。 返回控制台。上面的日志消息已在“(127.0.0.1:57309)已连接”上完成,刷新后,浏览器将连接到正在验证的套接字,日志消息为:

...
...(same msg above)
...
-received data from: 127.0.0.1:57608
-sending response: 127.0.0.1:57608
-socket close
...
...(and keeping this loop every page refresh, like reusing las socket openned)
...

最后。。。如何处理此浏览器请求?我只想回应“网页获取请求”而已。为什么使用浏览器resquest 3请购单?

是否尝试使用socket.io?这里有一点关于它的解释。。。是的,socket.io和内置http模块。两者都很好,但我的目标是使用低级别的api来实现这一点,因为我将来必须使用它。io和http模块是网络套接字/流的抽象,现在我正在搜索它是如何实现的。我发现这篇文章将回顾http请求和响应的结构,并介绍node的流api。