详解node.js的http模块实例演示


Posted in Javascript onJuly 12, 2018

上世纪六七十年代,红岸基地一直在向茫茫外太空发送讯号,当叶文洁通过太阳作为广播,将地球的讯号向外发送时,宇宙的各个先进文明都接收到了讯号,其中就包括了离我们最近的三体星。

本篇用node.js的http模块模拟这一事件。

let http = require('http')
// 创建一个web服务器
let server = http.createServer()

server.on('request', function () {
  console.log('我们接收到了一个用原始膜发送讯号的文明,这个文明竟然完全不知道宇宙的黑暗森林法则,我们暂不清理她,观察下这个文明的状态')
})

let port = 8000
server.listen(port, function () {
  console.log('在浏览器访问: http://127.0.0.1:' + port + ', 你将把你的请求发送到宇宙中...')
})

开启服务:

☁ 01 [master] :zap: node 08.js
在浏览器访问: http://127.0.0.1:8000, 你将把你的请求发送到宇宙中...
我们接收到了一个用原始膜发送讯号的文明,这个文明竟然完全不知道宇宙的黑暗森林法则,我们暂不清理她,观察下这个文明的状态

由于服务端没有给客户端响应,因为客户端一直在等待响应

详解node.js的http模块实例演示

http服务.gif

当我们的请求被三体星获取到后,三体人由于自己的母星不宜生存,在ETO组织的协助下,三体星准备入侵地球,以下是ETO与三体星的通信:

详解node.js的http模块实例演示

三体指令

let http = require('http')
let fs = require('fs')

// 创建一个web服务器
let server = http.createServer()

server.on('request', function (req, res) {
  let url = req.url
  if (url === '/') {
    // 设置编码格式,避免中文乱码
    res.setHeader('Content-Type', 'text/plain; charset=utf-8')
    res.end('欢迎来到三体世界')
  } else if (url === '/point') {
    console.log('地球人不知道有黑暗森林的存在,叶文洁悟出了这个道理,并启发了罗辑,我们要让ETO杀了罗辑')
    fs.readFile('./data/threeBody.html', function (err, data) {
      if (err) {
        res.setHeader('Content-Type', 'text/plain; charset=utf-8')
        res.end('星际网络出故障了,文件读取不到')
      } else {
        // 发送html文件,需要表示文件头是 text/html
        res.setHeader('Content-Type', 'text/html; charset=utf-8')
        res.end(data)
      }
    })
  } else if (url === '/photo') {
    console.log('ETO要看我们的星际环境,给他们传送张图片吧')
    fs.readFile('./data/threeBody.jpeg', function (err, data) {
      if (err) {
        res.setHeader('Content-Type', 'text/plain; charset=utf-8')
        res.end('星际网络出故障了,图片读取不到')
      } else {
        // 发送图片用的是二进制格式
        res.end(data)
      }
    })
  } else {
    res.setHeader('Content-Type', 'text/plain; charset=utf-8')
    res.end('消息已沉入茫茫宇宙中...')
  }
})

// 自定义端口
let port = 8000
server.listen(port, function () {
  console.log('与三体的通信又搭建成功,在浏览器访问: http://127.0.0.1:' + port)
})

详解node.js的http模块实例演示

三体通信服务.gif

每次改动服务端的代码,都需要重启服务

关于http模块的api使用说明,详见 http模块文档

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 对象是否存在判断
Jul 15 Javascript
jquery中防刷IP流量软件影响统计的一点对策
Jul 10 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
Jan 24 Javascript
js与jquery回车提交的方法
Feb 03 Javascript
基于jquery实现ajax无刷新评论
Aug 19 Javascript
jquery 获取select数组与name数组长度的实现代码
Jun 20 Javascript
JS制作类似选项卡切换的年历
Dec 03 Javascript
js实现三级联动效果(简单易懂)
Mar 27 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
Jul 08 jQuery
利用JS实现scroll自定义滚动效果详解
Oct 17 Javascript
vue导航栏部分的动态渲染实例
Nov 01 Javascript
在react项目中使用antd的form组件,动态设置input框的值
Oct 24 Javascript
Vue中使用的EventBus有生命周期
Jul 12 #Javascript
JavaScript中发出HTTP请求最常用的方法
Jul 12 #Javascript
vue实现引入本地json的方法分析
Jul 12 #Javascript
jQuery实现checkbox全选功能完整实例
Jul 12 #jQuery
JS实现将二维数组转为json格式字符串操作示例
Jul 12 #Javascript
vue路由组件按需加载的几种方法小结
Jul 12 #Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
Jul 12 #jQuery
You might like
php中iconv函数使用方法
2008/05/24 PHP
PHP中设置时区,记录日志文件的实现代码
2013/01/07 PHP
PHP获取数组中单列值的方法
2017/06/10 PHP
phpMyAdmin通过密码漏洞留后门文件
2018/11/20 PHP
PHP中的访问修饰符简单比较
2019/02/02 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
定义select的边框颜色
2008/04/28 Javascript
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
JavaScript OOP类与继承
2009/11/15 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
node.js中的http.response.writeHead方法使用说明
2014/12/14 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
2015/10/29 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
JavaScript 中Date对象的格式化代码方法汇总
2017/09/06 Javascript
JS实现闭包中的沙箱模式示例
2017/09/07 Javascript
js 两个日期比较相差多少天的实例
2017/10/19 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
JS使用setInterval实现的简单计时器功能示例
2018/04/19 Javascript
在vue中安装使用vux的教程详解
2018/09/16 Javascript
es6函数之尾递归用法实例分析
2020/04/25 Javascript
Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
2014/05/06 Python
Python中的模块和包概念介绍
2015/04/13 Python
Python 自动化表单提交实例代码
2017/06/08 Python
Django模板变量如何传递给外部js调用的方法小结
2017/07/24 Python
Python3.7中安装openCV库的方法
2018/07/11 Python
Python 面试中 8 个必考问题
2018/11/16 Python
利用python生成照片墙的示例代码
2020/04/09 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
2020/06/04 Python
Wedgwood英国官方网站:英式精致骨瓷餐具、礼品与生活精品,源于1759年
2019/09/02 全球购物
商务英语应届生自我鉴定
2013/12/08 职场文书
捐资助学倡议书
2014/04/15 职场文书
代收款委托书范本
2014/10/01 职场文书
悬崖上的金鱼姬观后感
2015/06/15 职场文书
小学英语课教学反思
2016/02/15 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书