详解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 相关文章推荐
Firefox outerHTML实现代码
Jun 04 Javascript
javascript Demo模态窗口
Dec 06 Javascript
JavaScript中valueOf函数与toString方法深入理解
Dec 02 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
Jun 05 Javascript
jQuery实现鼠标经过事件的延时处理效果
Aug 20 Javascript
ionic隐藏tabs的方法
Aug 29 Javascript
AngularJS过滤器filter用法实例分析
Nov 04 Javascript
javascript实现动态显示颜色块的报表效果
Apr 10 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
Jan 02 Javascript
详解自定义ajax支持跨域组件封装
Feb 08 Javascript
Node.js连接Sql Server 2008及数据层封装详解
Aug 27 Javascript
Vue router配置与使用分析讲解
Dec 24 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
新52大事件
2020/03/03 欧美动漫
PHPTree――php快速生成无限级分类
2018/03/30 PHP
javascript 数组排序函数
2009/08/20 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
2014/06/16 Javascript
浅谈document.write()输出样式
2015/05/07 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
2016/02/02 Javascript
Ext JS动态加载JavaScript创建窗体的方法
2016/06/23 Javascript
JavaScript仿网易选项卡制作代码
2016/10/06 Javascript
基于vue.js实现侧边菜单栏
2017/03/20 Javascript
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
深入理解Node中的buffer模块
2017/06/03 Javascript
ES6学习笔记之map、set与数组、对象的对比
2018/03/01 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
vue组件实现弹出框点击显示隐藏效果
2020/10/26 Javascript
微信小程序搜索功能(附:小程序前端+PHP后端)
2019/02/28 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
[02:21]DOTA2英雄基础教程 蝙蝠骑士
2013/12/16 DOTA
Python3 能振兴 Python的原因分析
2014/11/28 Python
Python Requests安装与简单运用
2016/04/07 Python
老生常谈Python序列化和反序列化
2017/06/28 Python
Python实现求解一元二次方程的方法示例
2018/06/20 Python
10分钟教你用Python实现微信自动回复功能
2018/11/28 Python
python 画出使用分类器得到的决策边界
2019/08/21 Python
Python完全识别验证码自动登录实例详解
2019/11/24 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
2020/08/24 Python
pandas按条件筛选数据的实现
2021/02/20 Python
html5 Web SQL Database 之事务处理函数transaction与executeSQL解析
2013/11/07 HTML / CSS
德国净水壶和滤芯品牌:波尔德PearlCo(家用净水器)
2020/04/29 全球购物
门卫班长岗位职责
2013/12/15 职场文书
司机辞职报告范文
2014/01/20 职场文书
活动总结报告范文
2014/05/04 职场文书
2014年检验员工作总结
2014/11/19 职场文书
优秀教师主要事迹材料
2015/11/04 职场文书
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技