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实现的一个简单聊天室功能分享
Dec 06 NodeJs
Nodejs实现批量下载妹纸图
May 28 NodeJs
Nodejs Express4.x开发框架随手笔记
Nov 23 NodeJs
nodejs简单实现操作arduino
Sep 25 NodeJs
理解nodejs的stream和pipe机制的原理和实现
Aug 12 NodeJs
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
Sep 06 NodeJs
nodejs对express中next函数的一些理解
Sep 08 NodeJs
使用nodeJs来安装less及编译less文件为css文件的方法
Nov 20 NodeJs
Nodejs下使用gm圆形裁剪并合成图片的示例
Feb 22 NodeJs
nodejs+mongodb aggregate级联查询操作示例
Mar 17 NodeJs
NodeJS多种创建WebSocket监听的方式(三种)
Jun 04 NodeJs
Nodejs 数组的队列以及forEach的应用详解
Feb 25 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
PHP实现用户认证及管理完全源码
2007/03/11 PHP
一个php导出oracle库的php代码
2009/04/20 PHP
php在项目中寻找代码的坏味道(综艺命名)
2012/07/19 PHP
PHP实现添加购物车功能
2017/03/06 PHP
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
2011/12/20 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
jQuery插件pagewalkthrough实现引导页效果
2015/07/05 Javascript
基于jquery实现即时检查格式是否正确的表单
2016/05/06 Javascript
JavaScript闭包实例详解
2016/06/03 Javascript
微信小程序 radio单选框组件详解及实例代码
2017/01/10 Javascript
JavaScript仿微信打飞机游戏
2020/07/05 Javascript
详解用node.js实现简单的反向代理
2017/06/26 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
2017/07/08 jQuery
使用jquery的jsonp如何发起跨域请求及其原理详解
2017/08/17 jQuery
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
react+redux仿微信聊天界面
2019/06/21 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
js实现表格数据搜索
2020/08/09 Javascript
vue3.0实现点击切换验证码(组件)及校验
2020/11/18 Vue.js
[05:56]第十六期——新进3大C之小兔基
2014/06/24 DOTA
Python中文件I/O高效操作处理的技巧分享
2017/02/04 Python
用pandas按列合并两个文件的实例
2018/04/12 Python
python操作kafka实践的示例代码
2019/06/19 Python
pymysql的简单封装代码实例
2020/01/08 Python
django实现日志按日期分割
2020/05/21 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
利用Python批量识别电子账单数据的方法
2021/02/08 Python
老板电器官方购物商城:老板油烟机、燃气灶、消毒柜、电烤箱
2018/05/30 全球购物
Python面试题:Python是如何进行内存管理的
2014/08/04 面试题
个人查摆问题自查报告
2014/10/16 职场文书
2015年法制宣传月活动总结
2015/03/26 职场文书
婚礼父母致辞
2015/07/28 职场文书
学生会部长竞选稿
2015/11/19 职场文书
导游词之铁岭象牙山
2019/12/06 职场文书
一文搞懂redux在react中的初步用法
2021/06/09 Javascript