详解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的变量值传递给ASP变量
Dec 10 Javascript
一行代码实现纯数据json对象的深度克隆实现思路
Jan 09 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
Jun 18 Javascript
js实现无限级树形导航列表效果代码
Sep 23 Javascript
js鼠标点击图片切换效果实现代码
Nov 19 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
Oct 30 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
Nov 10 Javascript
vue中使用ueditor富文本编辑器
Feb 08 Javascript
layui弹出层按钮提交iframe表单的方法
Aug 20 Javascript
Angular8 简单表单验证的实现示例
Jun 03 Javascript
jquery插件实现图片悬浮
Apr 16 jQuery
vue项目配置sass及引入外部scss文件
Apr 14 Vue.js
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邮件类
2007/01/03 PHP
php生成唯一的订单函数分享
2015/02/02 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
2015/12/17 PHP
详解Yii2 之 生成 URL 的方法
2017/06/16 PHP
浅析PHP中json_encode与json_decode的区别
2020/07/15 PHP
JS查看对象功能代码
2008/04/25 Javascript
js身份证验证超强脚本
2008/10/26 Javascript
js bind 函数 使用闭包保存执行上下文
2011/12/26 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
2013/01/24 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
jQuery的图片滑块焦点图插件整理推荐
2014/12/07 Javascript
javascript面向对象之this关键词用法分析
2015/01/13 Javascript
jQuery与Ajax以及序列化
2016/02/01 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
uploader秒传图片到服务器完整代码
2017/04/22 Javascript
Bootstrap图片轮播效果详解
2017/10/17 Javascript
移动端(微信等使用vConsole调试console的方法
2019/03/05 Javascript
vue通信方式EventBus的实现代码详解
2019/06/10 Javascript
python安装oracle扩展及数据库连接方法
2017/02/21 Python
Python异常继承关系和自定义异常实现代码实例
2020/02/20 Python
pygame实现飞机大战
2020/03/11 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
2012/01/21 面试题
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
教师实习自我鉴定
2013/12/14 职场文书
市场开发与营销专业求职信
2013/12/31 职场文书
客户经理竞聘演讲稿
2014/05/15 职场文书
节约粮食标语
2014/06/18 职场文书
法定授权委托证明书
2014/09/27 职场文书
公司员工手册范本
2015/05/14 职场文书
新手,如何业余时间安排好写作、提高写作能力?
2019/10/21 职场文书
Spring Cloud OpenFeign模版化客户端
2022/06/25 Java/Android
win10怎么设置右下角图标不折叠?Win10设置右下角图标不折叠的方法
2022/07/15 数码科技