详解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 Global对象
Aug 13 Javascript
js复制到剪切板的实例方法
Jun 28 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
Mar 24 Javascript
简介alert()与console.log()的不同
Aug 26 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
Sep 15 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
Apr 20 Javascript
tab栏切换原理
Mar 22 Javascript
详解如何用webpack打包一个网站应用项目
Jul 12 Javascript
C#实现将一个字符转换为整数
Dec 12 Javascript
layer.open关闭父窗口 以及调用父页面的方法
Aug 17 Javascript
koa源码中promise的解读
Nov 13 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
Sep 10 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代码
2006/12/06 PHP
php 常用类整理
2009/12/23 PHP
php中用memcached实现页面防刷新功能
2014/08/19 PHP
php+MySQL实现登录时验证登录名和密码是否正确
2016/05/10 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
php获取微信openid方法总结
2019/10/10 PHP
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
枚举的实现求得1-1000所有出现1的数字并计算出现1的个数
2013/09/10 Javascript
jquery ajax属性async(同步异步)示例
2013/11/05 Javascript
jquery+ajax实现注册实时验证实例详解
2015/12/08 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
JavaScript中的Reflect对象详解(ES6新特性)
2016/07/22 Javascript
JS实现异步上传压缩图片
2017/04/22 Javascript
Angular2 组件通信的实例代码
2017/06/23 Javascript
Scala解析Json字符串的实例详解
2017/10/11 Javascript
Node.js中DNS模块学习总结
2018/02/28 Javascript
深入分析element ScrollBar滚动组件源码
2019/01/22 Javascript
微信小程序页面间跳转传参方式总结
2019/06/13 Javascript
在layui框架中select下拉框监听更改事件的例子
2019/09/20 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
Python实现从url中提取域名的几种方法
2014/09/26 Python
Python自动调用IE打开某个网站的方法
2015/06/03 Python
python中json格式数据输出的简单实现方法
2016/10/31 Python
Python爬虫框架Scrapy基本用法入门教程
2018/07/26 Python
python中partial()基础用法说明
2018/12/30 Python
python使用KNN算法识别手写数字
2019/04/25 Python
python实现在函数图像上添加文字和标注的方法
2019/07/08 Python
Django 限制访问频率的思路详解
2019/12/24 Python
Python装饰器用法与知识点小结
2020/03/09 Python
Python 实现自动完成A4标签排版打印功能
2020/04/09 Python
校园安全广播稿
2014/02/08 职场文书
2014年教师政治学习材料
2014/06/02 职场文书
公务员群众路线心得体会
2014/11/03 职场文书