详解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 相关文章推荐
Packer 3.0 JS压缩及混淆工具 下载
May 03 Javascript
通用JS事件写法实现代码
Jan 07 Javascript
javascript call方法使用说明
Jan 11 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
Sep 19 Javascript
浅谈javascript中自定义模版
Jan 29 Javascript
Node.js包管理器Yarn的入门介绍与安装
Oct 17 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
Nov 20 Javascript
Javascript中从学习bind到实现bind的过程
Jan 05 Javascript
详解javascript 变量提升(Hoisting)
Mar 12 Javascript
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
Jul 03 jQuery
echarts实现晶体球面投影的实例教程
Oct 10 Javascript
uni-app 自定义底部导航栏的实现
Dec 11 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)
2006/10/09 PHP
Yii2 输出xml格式数据的方法
2016/05/03 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
JavaScript使用HTML5的window.postMessage实现跨域通信例子
2014/04/11 Javascript
javascript获取系统当前时间的方法
2015/11/19 Javascript
JS实现星星评分功能实例代码(两种方法)
2016/06/09 Javascript
JS调用某段SQL语句的方法
2016/10/20 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
vue动态路由实现多级嵌套面包屑的思路与方法
2017/08/16 Javascript
nodejs 图片预览和上传的示例代码
2017/09/30 NodeJs
详解在React.js中使用PureComponent的重要性和使用方式
2018/07/10 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
Python与Redis的连接教程
2015/04/22 Python
python getopt详解及简单实例
2016/12/30 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
Python实现的NN神经网络算法完整示例
2018/06/19 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
python 求10个数的平均数实例
2019/12/16 Python
Python 整行读取文本方法并去掉readlines换行\n操作
2020/09/03 Python
python两种获取剪贴板内容的方法
2020/11/06 Python
英国川宁茶官方网站:Twinings茶
2019/05/21 全球购物
Luxplus荷兰:以会员价购买美容产品等,独家优惠
2019/08/30 全球购物
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
护理职业生涯规划书
2014/01/24 职场文书
工作疏忽检讨书
2014/01/25 职场文书
竞争上岗实施方案
2014/03/21 职场文书
生育关怀行动实施方案
2014/03/26 职场文书
2014年百日安全生产活动总结
2014/05/04 职场文书
政府班子四风问题整改措施
2014/10/04 职场文书
美术教师个人工作总结
2015/02/06 职场文书
企业文化学习心得体会
2016/01/21 职场文书
《玩出了名堂》教学反思
2016/02/17 职场文书
检讨书怎么写?
2019/06/21 职场文书