详解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 相关文章推荐
JScript中的undefined和"undefined"的区别
Mar 08 Javascript
Prototype 学习 工具函数学习($w,$F方法)
Jul 12 Javascript
JQuery 弹出框定位实现方法
Dec 02 Javascript
js中cookie的添加、取值、删除示例代码
Oct 21 Javascript
javascript 上下banner替换具体实现
Nov 14 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
Dec 06 Javascript
jscript读写二进制文件的方法
Apr 22 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
Nov 02 Javascript
微信小程序 css使用技巧总结
Jan 09 Javascript
基于Vue实例生命周期(全面解析)
Aug 16 Javascript
js replace 全局替换的操作方法
Jun 12 Javascript
JavaScript实现简单贪吃蛇效果
Mar 09 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
DIY实用性框形天线
2021/03/02 无线电
玛琪朵 Macchiato
2021/03/03 咖啡文化
php自动获取字符串编码函数mb_detect_encoding
2011/05/31 PHP
php更新修改excel中的内容实例代码
2014/02/26 PHP
跟我学Laravel之路由
2014/10/15 PHP
ThinkPHP模板输出display用法分析
2014/11/26 PHP
PHP编程实现csv文件导入mysql数据库的方法
2017/04/29 PHP
jquery 学习笔记一
2010/04/07 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
2013/01/15 Javascript
javascript中的parseInt和parseFloat区别
2013/07/12 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
jquery滚动特效集锦
2015/06/03 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
2016/04/26 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
2017/07/20 Javascript
浅谈用Webpack路径压缩图片上传尺寸获取的问题
2018/02/22 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
2018/11/22 Javascript
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
深入理解Python单元测试unittest的使用示例
2017/11/18 Python
python中subprocess批量执行linux命令
2018/04/27 Python
Python实现快速计算词频功能示例
2018/06/25 Python
python设置环境变量的作用和实例
2019/07/09 Python
PyCharm 2019.3发布增加了新功能一览
2019/12/08 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
Python使用Turtle模块绘制国旗的方法示例
2021/02/28 Python
canvas实现高阶贝塞尔曲线(N阶贝塞尔曲线生成器)
2018/01/10 HTML / CSS
Myprotein芬兰官网:欧洲第一运动营养品牌
2019/05/05 全球购物
英超联赛的首选足球:Mitre足球
2019/05/06 全球购物
教师中国梦演讲稿
2014/04/23 职场文书
英语教师个人工作总结
2015/02/09 职场文书
2015年班组工作总结
2015/04/20 职场文书
开除通知书范本
2015/04/25 职场文书
欢送会主持词
2015/07/01 职场文书
Redis主从配置和底层实现原理解析(实战记录)
2021/06/30 Redis
常用的MongoDB查询语句的示例代码
2021/07/25 MongoDB