详解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 相关文章推荐
javascrip关于继承的小例子
May 10 Javascript
Jquery:ajax实现翻页无刷新功能代码
Aug 05 Javascript
JS对象转换为Jquery对象示例
Jan 26 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
Oct 31 Javascript
JavaScript学习笔记之JS事件对象
Jan 22 Javascript
JavaScript中的函数声明和函数表达式区别浅析
Mar 27 Javascript
Vue路由跳转问题记录详解
Jun 15 Javascript
Vue 中使用vue2-highcharts实现top功能的示例
Mar 05 Javascript
JavaScript设计模式之工厂模式简单实例教程
Jul 03 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
Feb 11 Javascript
对于防止按钮重复点击的尝试详解
Apr 22 Javascript
了解重排与重绘
May 29 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获取文件后缀的9种方法
2016/03/22 PHP
关于php中一些字符串总结
2016/05/05 PHP
php实现简单加入购物车功能
2017/03/07 PHP
PHP设计模式之组合模式定义与应用示例
2020/02/01 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
?牟┛途W扣了一??效果出?? target=
2007/05/27 Javascript
JavaScript代码复用模式实例分析
2012/12/02 Javascript
jQuery文本框(input textare)事件绑定方法教程
2013/04/24 Javascript
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
js操作模态窗口及父子窗口间相互传值示例
2014/06/09 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
jquery.validate表单验证插件使用方法解析
2016/11/07 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
2017/05/22 Javascript
three.js中文文档学习之创建场景
2017/11/20 Javascript
一步步教会你微信小程序的登录鉴权
2018/04/09 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
2018/09/18 Javascript
vue-cli3+typescript初体验小结
2019/02/28 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
2020/09/10 Javascript
vue-video-player视频播放器使用配置详解
2020/10/23 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
Python多线程实例教程
2014/09/06 Python
Python的Flask框架应用调用Redis队列数据的方法
2016/06/06 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
2017/03/20 Python
Python Flask基础教程示例代码
2018/02/07 Python
Python GUI Tkinter简单实现个性签名设计
2018/06/19 Python
Python中typing模块与类型注解的使用方法
2019/08/05 Python
毕业生简单求职信
2013/11/19 职场文书
保护环境倡议书300字
2014/05/19 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
共产党员批评与自我批评
2014/10/15 职场文书
单身证明范本
2015/06/15 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL
R9700摩机记
2022/04/05 无线电
Windows Server 2019 域控制器安装图文教程
2022/04/28 Servers