上世纪六七十年代,红岸基地一直在向茫茫外太空发送讯号,当叶文洁通过太阳作为广播,将地球的讯号向外发送时,宇宙的各个先进文明都接收到了讯号,其中就包括了离我们最近的三体星。
本篇用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, 你将把你的请求发送到宇宙中…
我们接收到了一个用原始膜发送讯号的文明,这个文明竟然完全不知道宇宙的黑暗森林法则,我们暂不清理她,观察下这个文明的状态
由于服务端没有给客户端响应,因为客户端一直在等待响应
http服务.gif
当我们的请求被三体星获取到后,三体人由于自己的母星不宜生存,在ETO组织的协助下,三体星准备入侵地球,以下是ETO与三体星的通信:
三体指令
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) })
三体通信服务.gif
每次改动服务端的代码,都需要重启服务
关于http模块的api使用说明,详见 http模块文档
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
© 版权声明
THE END
暂无评论内容