详解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 相关文章推荐
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
Apr 24 Javascript
javascript 表单验证常见正则
Sep 28 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
Dec 13 Javascript
jQuery filter函数使用方法
May 19 Javascript
jQuery中用dom操作替代正则表达式
Dec 29 Javascript
PHP中CURL的几个经典应用实例
Jan 23 Javascript
js中unicode转码方法详解
Oct 09 Javascript
JavaScript判断输入是否为数字类型的方法总结
Sep 28 Javascript
jQuery实现模糊查询的方法分析
May 10 jQuery
vue实现拖拽效果
Dec 23 Javascript
JS实现可控制的进度条
Mar 25 Javascript
vue-cil之axios的二次封装与proxy反向代理使用说明
Apr 07 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
让你同时上传 1000 个文件 (一)
2006/10/09 PHP
PHP聊天室简单实现方法详解
2018/12/08 PHP
Js获取事件对象代码
2010/08/05 Javascript
JavaScript之Getters和Setters 平台支持等详细介绍
2012/12/07 Javascript
js去空格技巧分别去字符串前后、左右空格
2013/10/21 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
jQuery中$.each使用详解
2015/01/29 Javascript
将List对象列表转换成JSON格式的类实现方法
2016/07/04 Javascript
深入理解jQuery layui分页控件的使用
2016/08/17 Javascript
jquery 动态增加删除行的简单实例(推荐)
2016/10/12 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
JS完成画圆圈的小球
2017/03/07 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
2017/05/31 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
2017/08/17 Javascript
Angular中的$watch方法详解
2017/09/18 Javascript
使用vue-cli创建项目的图文教程(新手入门篇)
2018/05/02 Javascript
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
2020/02/01 Javascript
如何手写一个简易的 Vuex
2020/10/10 Javascript
[00:52]DOTA2齐天大圣预告片
2016/08/13 DOTA
Python pass 语句使用示例
2014/03/11 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
在pycharm中配置Anaconda以及pip源配置详解
2019/09/09 Python
python3 动态模块导入与全局变量使用实例
2019/12/22 Python
Python基础之字符串操作常用函数集合
2020/02/09 Python
keras 模型参数,模型保存,中间结果输出操作
2020/07/06 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
2020/10/21 Python
Answear匈牙利:来自全球200多个知名时尚品牌
2017/04/21 全球购物
英国剑桥包中文官网:The Cambridge Satchel Company中国
2018/11/06 全球购物
公司接待方案
2014/03/08 职场文书
幼儿教师师德承诺书
2014/05/23 职场文书
禁毒宣传工作方案
2014/05/23 职场文书
船舶工程技术专业求职信
2014/08/07 职场文书
2015年派出所工作总结
2015/04/24 职场文书
教师教育教学随笔
2015/08/15 职场文书
Pytorch中Softmax与LogSigmoid的对比分析
2021/06/05 Python