http.createserver 对比 net.createserver 在 node.js
http.createserver vs net.createserver in node.js
我无法理解 node.js 中 net.createserver 和 http.createserver 之间的区别。
我已阅读位于这两个网址的两种方法的文档
https://nodejs.org/api/net.html#/net_net,
https://nodejs.org/api/http.html#/http_class_http_server.
我知道 http.createserver 创建了一个 http 服务器。但是,文档说 net.createserver 创建了一个 tcp 服务器。我知道 tcp 是 http 之上的传输协议,http 服务器被设置为读取 http 请求 headers。我也非常理解 node.js 中偶数发射器的概念。但是,我不明白 tcp 服务器的概念以及为什么要在 node.js 中创建一个。上下文是我正在编写 "node.js in action" 书中的一个聊天应用程序示例。
http.createServer()
设置一个处理HTTP协议的服务器,确实是通过tcp传输的。 net.createServer()
创建一个服务器,它只知道何时发生 TCP 连接、数据已传输等,但不知道是否收到有效的 HTTP 请求等。
如果您正在编写 Web 服务器,请选择 http.createServer()
而不是 net.createServer()
,因为它会为您节省大量工作。如果您正在编写其他类型的服务器,请不要使用 http.createServer()
.
我不太了解Node.js,但我对网络有所了解。 HTTP 是一种在模型 OSI 的第 7(应用)层上工作的协议。 TCP 是在模型 OSI 的第 4(传输)层上工作的协议。正如您所说,是的,HTTP 在 TCP 之上工作。通过 http.createServer()
创建 HTTP 服务器的选项在那里,因此您不必使用 net.createServer()
自己实现它。 TCP 协议可能被许多应用程序使用,您可以创建自己的协议,或实现一些与 HTTP 不同的协议,例如:FTP、DNS、SMTP、Telnet 等等。
直接来自 Node Net documentation. NET is the basic bare-bones server you can create. It's particularly useful for setting up a cluster of servers 并允许简单的连接,但在此基础上您需要通信协议,即 HTTP,实际上 HTTP 的核心是 NET 服务器。
The net module provides an asynchronous network API for creating stream-based TCP or IPC servers (net.createServer()) and clients (net.createConnection()).
并来自 HTTP documentation。 HTTP 是根据客户端请求传输大量数据然后生成响应的常用方法。这是通过 Internet 进行通信的标准方式,引入了握手的概念,并通过 REST 协议完成,您知道通常的请求和响应通信方式。
The HTTP interfaces in Node.js are designed to support many features of the protocol which have been traditionally difficult to use. In particular, large, possibly chunk-encoded, messages. The interface is careful to never buffer entire requests or responses — the user is able to stream data.
Websockets 是对 HTTP headers 的升级,提供低延迟和更少的服务器负载,并且是一种更简单的对话。如果您正在谈论点对点通信,这就是您想要的方式。
我无法理解 node.js 中 net.createserver 和 http.createserver 之间的区别。
我已阅读位于这两个网址的两种方法的文档 https://nodejs.org/api/net.html#/net_net, https://nodejs.org/api/http.html#/http_class_http_server.
我知道 http.createserver 创建了一个 http 服务器。但是,文档说 net.createserver 创建了一个 tcp 服务器。我知道 tcp 是 http 之上的传输协议,http 服务器被设置为读取 http 请求 headers。我也非常理解 node.js 中偶数发射器的概念。但是,我不明白 tcp 服务器的概念以及为什么要在 node.js 中创建一个。上下文是我正在编写 "node.js in action" 书中的一个聊天应用程序示例。
http.createServer()
设置一个处理HTTP协议的服务器,确实是通过tcp传输的。 net.createServer()
创建一个服务器,它只知道何时发生 TCP 连接、数据已传输等,但不知道是否收到有效的 HTTP 请求等。
如果您正在编写 Web 服务器,请选择 http.createServer()
而不是 net.createServer()
,因为它会为您节省大量工作。如果您正在编写其他类型的服务器,请不要使用 http.createServer()
.
我不太了解Node.js,但我对网络有所了解。 HTTP 是一种在模型 OSI 的第 7(应用)层上工作的协议。 TCP 是在模型 OSI 的第 4(传输)层上工作的协议。正如您所说,是的,HTTP 在 TCP 之上工作。通过 http.createServer()
创建 HTTP 服务器的选项在那里,因此您不必使用 net.createServer()
自己实现它。 TCP 协议可能被许多应用程序使用,您可以创建自己的协议,或实现一些与 HTTP 不同的协议,例如:FTP、DNS、SMTP、Telnet 等等。
直接来自 Node Net documentation. NET is the basic bare-bones server you can create. It's particularly useful for setting up a cluster of servers 并允许简单的连接,但在此基础上您需要通信协议,即 HTTP,实际上 HTTP 的核心是 NET 服务器。
The net module provides an asynchronous network API for creating stream-based TCP or IPC servers (net.createServer()) and clients (net.createConnection()).
并来自 HTTP documentation。 HTTP 是根据客户端请求传输大量数据然后生成响应的常用方法。这是通过 Internet 进行通信的标准方式,引入了握手的概念,并通过 REST 协议完成,您知道通常的请求和响应通信方式。
The HTTP interfaces in Node.js are designed to support many features of the protocol which have been traditionally difficult to use. In particular, large, possibly chunk-encoded, messages. The interface is careful to never buffer entire requests or responses — the user is able to stream data.
Websockets 是对 HTTP headers 的升级,提供低延迟和更少的服务器负载,并且是一种更简单的对话。如果您正在谈论点对点通信,这就是您想要的方式。