NodeJS http模块用法示例【创建web服务器/客户端】


Posted in NodeJs onNovember 05, 2019

本文实例讲述了NodeJS http模块用法。分享给大家供大家参考,具体如下:

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

创建Web服务器

/**
 * 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.js程序设计有所帮助。

NodeJs 相关文章推荐
NodeJS 模块开发及发布详解分享
Mar 07 NodeJs
用nodejs写的一个简单项目打包工具
May 11 NodeJs
nodejs教程之异步I/O
Nov 21 NodeJs
nodejs中转换URL字符串与查询字符串详解
Nov 26 NodeJs
NodeJS制作爬虫全过程
Dec 22 NodeJs
windows下安装nodejs及框架express
Aug 07 NodeJs
浅谈Nodejs中的作用域问题
Dec 26 NodeJs
nodejs基础知识
Feb 03 NodeJs
webpack打包nodejs项目的方法
Sep 26 NodeJs
nodejs图片处理工具gm用法小结
Dec 12 NodeJs
NodeJS多种创建WebSocket监听的方式(三种)
Jun 04 NodeJs
详解NodeJS模块化
Jun 15 NodeJs
nodejs实现UDP组播示例方法
Nov 04 #NodeJs
nodejs dgram模块广播+组播的实现示例
Nov 04 #NodeJs
Nodejs实现图片上传、压缩预览、定时删除功能
Oct 25 #NodeJs
nodejs语言实现验证码生成功能的示例代码
Oct 13 #NodeJs
NodeJS有难度的面试题(能答对几个)
Oct 09 #NodeJs
Nodejs监控事件循环异常示例详解
Sep 22 #NodeJs
详解利用nodejs对本地json文件进行增删改查
Sep 20 #NodeJs
You might like
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
php5数字型字符串加解密代码
2008/04/24 PHP
php网站被挂木马后的修复方法总结
2014/11/06 PHP
php使用ob_flush不能每隔一秒输出原理分析
2015/06/02 PHP
PHP文件下载实例代码浅析
2016/08/17 PHP
限制文本字节数js代码
2007/03/06 Javascript
JavaScript 给汉字排序实例代码
2008/06/28 Javascript
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
Jquery图片滚动与幻灯片的实例代码
2013/04/08 Javascript
php与js的区别是什么
2013/08/05 Javascript
js动态设置鼠标事件示例代码
2013/10/30 Javascript
Javascript模拟加速运动与减速运动代码分享
2014/12/11 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
2016/07/20 Javascript
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
JavaScript定时器setTimeout()和setInterval()详解
2017/08/18 Javascript
详解在Vue中有条件地使用CSS类
2017/09/30 Javascript
vue脚手架及vue-router基本使用
2018/04/09 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
PyMongo安装使用笔记
2015/04/27 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
解决django后台管理界面添加中文内容乱码问题
2019/11/15 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
详解三种方式实现平滑滚动页面到顶部的功能
2019/04/23 HTML / CSS
Android面试题附答案
2014/12/08 面试题
银行实习鉴定
2013/12/13 职场文书
三年大学自我鉴定
2014/01/16 职场文书
人事部岗位职责范本
2014/03/05 职场文书
家长寄语大全
2014/04/02 职场文书
2014副镇长民主生活会个人对照检查材料思想汇报
2014/09/30 职场文书
单位租房协议书范本
2014/12/04 职场文书
2016年“我们的节日·清明节”活动总结
2016/04/01 职场文书
如何获取numpy array前N个最大值
2021/05/14 Python