2016大型注册域名网站有哪些杭州网站优化平台
在上一篇文章中,我介绍了可能的最基本的Node.js程序 。 虽然Hello World程序很好用,但Node.js以创建高度可扩展的服务器应用程序而闻名。 本文介绍了在Node.js之上构建的简单HTTP服务器。
运行服务器
首先创建一个名为“ web_server.js”的新文件。 将以下代码插入文件并保存。
var http = require("http");
var server = http.createServer(function(request, response) {response.writeHead(200, {"Content-Type": "text/html"});response.write("<!DOCTYPE "html">");response.write("<html>");response.write("<head>");response.write("<title>Hello World Page</title>");response.write("</head>");response.write("<body>");response.write("Hello World!");response.write("</body>");response.write("</html>");response.end();
});server.listen(80);
console.log("Server is listening");
要启动服务器,请键入以下命令。 如果一切正常,您将看到一条消息,表明服务器正在侦听。 请注意,示例服务器尝试绑定到端口80(标准HTTP端口)。 如果此端口已被使用或在您的计算机上受到限制,则将遇到错误。
node web_server.js
下一步是使用Web浏览器连接到服务器。 启动您选择的浏览器,并将其定向到以下任一链接。 用网络术语来说, localhost
(其IP地址为127.0.0.1)是指您当前使用的计算机。 您的浏览器应该说“ Hello World!”。
http://localhost http://127.0.0.1
服务器如何工作
现在服务器已启动并正在运行,是时候分析代码了。 首先要注意的是在第1行上对require()
的调用。Node.js提供了具有大型开发者社区的简单模块系统。 Node.js程序可以使用require()
方法加载各个模块。 虽然必须下载许多模块,但是Node.js安装中包含一些模块,例如http
。
在第2行,使用http
模块的createServer()
方法创建HTTP服务器。 与大多数Node.js函数一样, createServer()
将回调函数作为参数。 每当服务器收到新请求时,都会执行此回调函数。
回调函数接受两个参数, request
和response
。 request
对象包含有关客户端请求的信息,例如URL,HTTP标头等。 同样, response
对象用于将数据返回给客户端。
回调函数通过调用response.writeHead()
方法开始。 此方法将HTTP状态代码和响应标头的集合发送回客户端。 状态码用于指示请求的结果。 例如,每个人之前都遇到404错误,这表明找不到页面。 示例服务器返回代码200,表示成功。
服务器连同状态码一起返回许多HTTP头,这些头定义了响应的参数。 如果不指定头,Node.js将隐式发送给您。 示例服务器仅指定Content-Type
标头。 这个特定的标头定义了响应的MIME类型 。 对于HTML响应,MIME类型为“ text / html”。
接下来,服务器执行对response.write()
多次调用。 这些调用用于编写HTML页面。 默认情况下,使用UTF-8字符编码。 从技术上讲,所有这些调用都可以合并为一个调用以提高性能。 但是,对于这样一个简单的例子,为了代码可读性已经牺牲了性能。
编写HTML页面之后,将调用response.end()
方法。 通过调用此方法,我们告诉服务器响应头和正文已发送,并且请求已完成。 示例服务器调用不带参数的end()
。 但是,假设只需要一个调用,也可以像write()
一样调用end()
。
第15行对listen()
的调用使服务器绑定到端口并侦听传入的连接。 计算机具有成千上万个端口,这些端口充当通信端点。 为了连接到服务器,客户端必须确切知道服务器正在侦听哪个端口。 端口由端口号标识,HTTP服务器通常侦听端口80。
结论
本文介绍了一个非常基本的HTTP服务器。 在当前状态下,服务器只能返回单个HTML页面。 在接下来的几周中,我们将更深入地研究Node.js的世界,探索其他功能,例如从文件系统读取网页以及合并HTTP身份验证。
如果您喜欢这篇文章,那么您将想要了解有关SitePoint最新的印刷和电子书系列Jump Start的全部信息 。 第一个标题是Don Nguyen的Node.js-在SitePoint上了解更多!
From: https://www.sitepoint.com/creating-a-http-server-in-node-js/