详解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 相关文章推荐
用javascript实现的激活输入框后隐藏初始内容
Jun 29 Javascript
对jQuery的事件绑定的一些思考(补充)
Apr 20 Javascript
JavaScript中的连字符详解
Nov 28 Javascript
Javasipt:操作radio标签详解
Dec 30 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
Sep 23 Javascript
js实现背景图片感应鼠标变化的方法
Feb 28 Javascript
jQuery入门基础知识学习指南
Aug 14 Javascript
详解webpack+angular2开发环境搭建
Jun 28 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
Sep 20 Javascript
ElementUI之Message功能拓展详解
Oct 18 Javascript
详解JSON.stringify()的5个秘密特性
May 26 Javascript
小程序点餐界面添加购物车左右摆动动画
Sep 23 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字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
2010/09/01 PHP
php 变量未定义等错误的解决方法
2011/01/12 PHP
mysql总结之explain
2012/02/27 PHP
php数组去重复数据示例
2014/02/25 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
PHP进阶学习之命名空间基本用法分析
2019/06/18 PHP
js活用事件触发对象动作
2008/08/10 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
2014/04/16 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
浅析js的模块化编写 require.js
2016/12/07 Javascript
Bootstrap模态窗口源码解析
2017/02/08 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
vue-cli 3.x 修改dist路径的方法
2018/09/19 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
2018/11/14 Javascript
泛谈JS逻辑判断选择器 || &&
2019/05/24 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
JS实现秒杀倒计时特效
2020/01/02 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
Python中按值来获取指定的键
2019/03/04 Python
django 邮件发送模块smtp使用详解
2019/07/22 Python
使用 Python 在京东上抢口罩的思路详解
2020/02/27 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
2021/01/19 Python
Speedo澳大利亚官网:全球领先游泳品牌
2018/02/04 全球购物
英国最受欢迎的在线隐形眼镜商店:VisionDirect.co.uk
2018/12/06 全球购物
int和Integer有什么区别
2013/05/25 面试题
30岁生日感言
2014/01/25 职场文书
电子银行营销方案
2014/02/22 职场文书
投标承诺书怎么写
2014/05/24 职场文书
教师自查自纠材料
2014/10/14 职场文书
2015年护士工作总结范文
2015/03/31 职场文书
Pandas搭配lambda组合使用详解
2022/01/22 Python