详解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与CSS写在同一个文件里的书写方法
Jun 02 Javascript
简体中文转换繁体中文(实现代码)
Dec 25 Javascript
javascript限制用户只能输汉字中文的方法
Nov 20 Javascript
jQuery实现的输入框选择时间插件用法实例
Feb 28 Javascript
写给小白的JavaScript引擎指南
Dec 04 Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
Nov 16 Javascript
利用Node.js编写跨平台的spawn语句详解
Feb 12 Javascript
jQuery设计思想
Mar 07 Javascript
BootstrapTable加载按钮功能实例代码详解
Sep 22 Javascript
详解CommonJS和ES6模块循环加载处理的区别
Dec 26 Javascript
如何基于JS截获动态代码
Dec 25 Javascript
使用jquery实现轮播图效果
Jan 02 jQuery
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多态的实现详解
2013/06/09 PHP
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
2013/08/05 PHP
WordPress后台中实现图片上传功能的实例讲解
2016/01/11 PHP
Ajax实现对静态页面的文章访问统计功能示例
2016/10/10 PHP
PHP中include()与require()的区别说明
2017/02/14 PHP
完美解决Thinkphp3.2中插入相同数据的问题
2017/08/01 PHP
解决laravel 表单提交-POST 异常的问题
2019/10/15 PHP
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
jquery中ajax使用error调试错误的方法
2015/02/08 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
AngularJS  ng-table插件设置排序
2016/09/21 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
js实现一个简单的数字时钟效果
2017/03/29 Javascript
如何选择适合你的JavaScript框架
2017/11/20 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
Python中遇到的小问题及解决方法汇总
2017/01/11 Python
用python找出那些被“标记”的照片
2017/04/20 Python
python 生成器协程运算实例
2017/09/04 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
2019/07/23 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
pyenv虚拟环境管理python多版本和软件库的方法
2019/12/26 Python
python入门:argparse浅析 nargs='+'作用
2020/07/12 Python
Python常用断言函数实例汇总
2020/11/30 Python
中国首家奢侈品O2O网购平台:第五大道奢侈品网
2017/12/14 全球购物
Wiggle澳大利亚:自行车、跑步、游泳商店
2020/11/07 全球购物
"序列点" 是什么
2016/07/29 面试题
市场营销专业推荐信
2013/11/03 职场文书
技术总监岗位职责
2013/12/05 职场文书
大学生学业生涯规划
2014/01/05 职场文书
幼儿园小班植树节活动方案
2014/03/04 职场文书
加强干部作风建设整改方案
2014/10/24 职场文书
办公室文员岗位职责
2015/02/04 职场文书
Redis特殊数据类型bitmap位图
2022/06/01 Redis