node-http

Node.js提供了http模块,用于搭建HTTP服务端和客户端。

创建Web服务器

  • server.js
 /**
* node-http 服务端
*/
let http = require('http');
let url = require('url');
let fs = require('fs'); // 创建服务器
let server = http.createServer((req, res) => {
// 解析请求
let pathname = url.parse(req.url).pathname; // 形如`/index.html`
console.log('收到对文件 ' + pathname + '的请求'); // 读取文件内容
fs.readFile(pathname.substr(1), (err, data) => {
if (err) {
console.log('文件读取失败:' + err); // 设置404响应
res.writeHead(404, {
'Content-Type': 'text/html'
});
}
else {
// 状态码:200
res.writeHead(200, {
'Content-Type': 'text/html'
}); // 响应文件内容
res.write(data.toString());
} // 发送响应
res.end();
});
}); server.listen(8081); console.log('服务运行在:http://localhost:8081,请访问:http://localhost:8081/index.html');
  • index.html
 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Node http</title>
</head>
<body>
<h1>Hi~</h1>
</body>
</html>

运行server.js,打开浏览器访问。

创建客户端

  • client.js
 /**
* node http 创建客户端
*/
let http = require('http'); // 请求选项
let options = {
host: 'localhost',
port: '8081',
path: '/index.html'
}; // 处理响应的回调函数
let callback = (res) => {
// 不断更新数据
let body = ''; res.on('data', (data) => {
body += data;
}); res.on('end', () => {
console.log('数据接收完成');
console.log(body);
});
} // 向服务端发送请求
let req = http.request(options, callback);
req.end();

运行server.js,再运行client.js

												

node http模块搭建简单的服务和客户端的更多相关文章

  1. Ubuntu中使用Nginx+rtmp模块搭建流媒体视频点播服务

    1. 背景 不知不觉笔者来到流媒体部门已经一年半多了,积攒了不少的流媒体知识,但平时工作也比较忙,很少进行总结性的梳理,最近准备花几个周末时间写一个流媒体系列的实践文章,也算是给自己做总结的同时帮助有 ...

  2. SpringBoot + Dubbo + zookeeper 搭建简单分布式服务

    SpringBoot + Dubbo + zookeeper 搭建简单分布式服务 详细操作及源码见: https://github.com/BillyYangOne/dubbo-springboot

  3. 搭建简单Django服务并通过HttpRequester实现GET/POST http请求提交表单

    调试Django框架写的服务时,需要模拟客户端发送POST请求,然而浏览器只能模拟简单的GET请求(将参数写在url内),网上搜索得到了HttpRequester这一firefox插件,完美的实现了模 ...

  4. 使用node搭建简单的服务

    //创建依赖模块var http = require('http');var url = require('url');var fs = require('fs');var server = http ...

  5. Node安装及搭建简单服务器

    注:本文安装系统为mac,windows及其他系统下载对应安装包 ,mac下载后的安装包为apk文件,windows为msi文件. 安装 1.在网上下载node安装包,官方网站2.双击下载文件,按步骤 ...

  6. 使用Node.js快速搭建简单的静态文件服务器

    做前端有时会采用一些复杂框架,在文件系统中直接打开页面(用file:///方式打开),往往会报跨域的错,类似于“XMLHttpRequest cannot load ...(文件名). Cross o ...

  7. Node安装及搭建简单HTTP服务器

    注:本文安装系统为mac,windows及其他系统下载对应安装包 ,mac下载后的安装包为apk文件,windows为msi文件. 安装 1.在网上下载node安装包,官方网站2.双击下载文件,按步骤 ...

  8. node express+mysql搭建简易API服务—body-parser中间件

    最近用express搭建了一个简单的RESTful风格的API服务,数据库使用mysql,主要用于获取数据库数据,模糊搜索等. 需要用到的模块: express:这个都很熟悉了: body-parse ...

  9. [转]php,使用Slim和Medoo搭建简单restful服务

    本文转自:https://www.jianshu.com/p/32b6d0284d97 关于rest和orm框架的组合使用,几年前我就写过使用Slim+Notorm来搭建restful服务,不过看到N ...

随机推荐

  1. virtualbox+vagrant学习-2(command cli)-11-vagrant PowerShell命令

    PowerShell 格式: vagrant powershell [-- extra powershell args] 这将在主机上打开PowerShell提示符,进入正在运行的vagrant机器. ...

  2. 980. Unique Paths III

    题目来源: https://leetcode.com/problems/unique-paths-iii/ 自我感觉难度/真实难度: 题意: 分析: 回溯法,直接DFS就可以了 自己的代码: clas ...

  3. django中使用tinymce 富文本

    django后台集成富文本编辑器Tinymce  安装方式一: 1.首先去python的模块包的网站下载一个django-tinymce的包 https://pypi.python.org/pypi/ ...

  4. go语言的结构体指针

    Go 语言结构体 Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型.   结构体是由一系列具有相同类型或不同类型的数据构成的数据集合.   结构体表示一项记录,比 ...

  5. IIS中多域名多网站的设置方法

    一个 IP 可以绑定多个域名.如您需要实现多个域名访问同一个网站,只需就不同域名添加 A 记录指向同一个 IP 即可. 如您需要实现多个域名访问同一虚拟服务器上不同网站,也需要就不同域名添加 A 记录 ...

  6. 时间戳转为C#格式时间

    经常发现很多地方使用一个时间戳表示时间.比如: 1370838759 表示 2013年6月10日 12:32:39. 我们就需要一个工具,方便地转换这种时间格式 什么是时间戳? 时间戳, 又叫Unix ...

  7. 2017-2018-1 20155338 加分项目——PWD的实现

    2017-2018-1 20155338 加分项目--PWD的实现 项目要求 1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3 实现mypwd 4 测试 ...

  8. 2015539平措卓玛课堂测试(ch06)

    课堂测试(ch06) 1.下面代码中,对数组x填充后,采用直接映射高速缓存,所有对x和y引用的命中率为(D) A .1 B .1/4 C .1/2 D .3/4 解析:缓存命中:当程序需要第(k+1) ...

  9. 仙人掌&圆方树

    仙人掌&圆方树 Tags:图论 [x] [luogu4320]道路相遇 https://www.luogu.org/problemnew/show/P4320 [ ] [SDOI2018]战略 ...

  10. 洛谷 1440 求m区间内的最小值

    洛谷  1440 求m区间内的最小值 题目描述 一个含有n项的数列(n<=2000000),求出每一项前的m个数到它这个区间内的最小值.若前面的数不足m项则从第1个数开始,若前面没有数则输出0. ...