NodeJs 第四章 net、http、https 模块

net、http、https 模块

  • net
    • net 模块是什么
    • net 模块能干些什么
    • net 模块如何创建服务器
    • net 模块如何创建客户端
  • http
    • 如何发送一个http请求
    • 如何创建 http 服务
  • https
    • 如何获取 SSL 证书
    • 如何创建一个 https 服务

net

net 模块是什么

net 模块异步网络 API,用于创建基于流的 TCP 或 IPC 服务器 (net.createServer()) 和客户端

net 模块能干些什么

  1. 可以进行进程间的通信(IPC)
  2. 网络通信(TCP/IP)

net 模块如何创建服务器

  1. 使用 net.createServer(), 他会返回一个 TCP 或 ICP 服务器
  2. server.listen(port) 监听当前计算机的某个端口
  3. server.on(“listening”, ()=>{}),开始监听端口后触发的事件
  4. server.on(“connection”, socket=>{}), 当某个连接到来时,触发改事件。事件的监听函数会获得一个socket对象。在这里插入图片描述

net 模块如何创建客户端

  • 可以使用net.createConnection(options[, connectListener]) ,返回一个 socket
    在这里插入图片描述

  • 什么是 socket
    socket是一个特殊的文件,在node中表现为一个双工流对象。通过向流写入内容发送数据,监听流的内容获取数据。

http

http 模块是建立在 net 模块之上,无须手动管理 socket,也不需要手动组装消息格式,其本质是 TCP/IP 服务.

如何发送一个http请求

  1. 使用**http.request(url[, options][, callback])**发送请求,会返回一个 request
  2. request.end([data[, encoding]][, callback]) 完成发送请求
const http = require('http')const request = http.request('http://xxx', {method: 'GET'}, (res) => {res.on('data', (chunk) => {console.log(chunk.toString('utf8'))})res.on('end', () => {console.log('end')})
})request.end();

如何创建 http 服务

  1. 使用http.createServer([options][, requestListener]),返回 http 服务
  2. 使用 server.listen() 监听端口号
const server = http.createServer((req, res) => {console.log(req, res)
})
server.listen(8081)

现在就可以通过 http://localhost:8081/ 访问了

总结

  1. 客户端
    • 请求:ClientRequest对象
    • 响应:IncomingMessage对象
  2. 服务器
    • 请求:IncomingMessage对象
    • 响应:ServerResponse对象

https

https 和 http 的区别是 https 多了一个 SSL 证书

如何获取 SSL 证书

  • 方式一: 网上购买权威机构证书,需要有自己的服务器,域名。此方式用于应用在部署环境中
  • 方式二: 本地生成证书
  1. 如果是windows电脑,需要下载 openssl,也可一直接下载源码,自行构建。
  2. 生成CA私钥
openssl genrsa -des3 -out ca-pri-key.pem 1024
	genrsa:密钥对生成算法-des3:使用对称加密算法des3对私钥进一步加密命令运行过程中会让用户输入密码,该密码将作为des3算法的key-out ca-pri-key.pem:将加密后的私钥保存到当前目录的ca-pri-key.pem文件中pem:Privacy-Enhanced Mail (PEM) 1024:私钥的字节数
  1. 生成CA公钥(证书请求)
openssl req -new -key ca-pri-key.pem -out ca-pub-key.pem
	通过私钥文件ca-pri-key.pem中的内容,生成对应的公钥,保存到ca-pub-key.pem中运行过程中要使用之前输入的密码来实现对私钥文件的解密其他输入信息Country Name:国家名  CNProvince Name:省份名 SichuanLocal Name:城市名Company Name:公司名Unit Name:部门名Common Name:站点名。。。
  1. 生成CA证书
	openssl x509 -req -in ca-pub-key.pem -signkey ca-pri-key.pem -out ca-cert.crt
 使用X.509证书标准通过证书请求文件ca-pub-key.pem生成证书使用私钥ca-pri-key.pem加密证书保存到ca-cert.crt文件中
  1. 生成服务器私钥
openssl genrsa -out server-key.pem 1024
  1. 生成服务器公钥
openssl req -new -key server-key.pem -out server-scr.pem
  1. 生成服务器证书
openssl x509 -req -CA ca-cert.crt -CAkey ca-pri-key.pem -CAcreateserial -in server-scr.pem -out server-cert.crt

如何创建一个 https 服务

const https = require("https");
const server = https.createServer({key: fs.readFileSync(path.resolve(__dirname, "./server-key.pem")), //私钥cert: fs.readFileSync(path.resolve(__dirname, "./server-cert.crt"))},(req, res)  => {}
);
server.on("listening", () => {console.log("server listen 443");
});
server.listen(443);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2660859.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

MongoDB主从复制,一文打尽!

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

Spring Boot学习随笔- Jasypt加密数据库用户名和密码以及解密

学习视频:【编程不良人】2021年SpringBoot最新最全教程 第十九章、Jasypt加密 Jasypt全称是Java Simplified Encryption,是一个开源项目。 Jasypt与Spring Boot集成,以便在应用程序的属性文件中加密敏感信息,然后在应用程序运行…

mac下jd-gui提示没有找到合适的jdk版本

mac下jd-gui提示jdk有问题 背景解决看一下是不是真有问题了方法一:修改启动脚本方法二:设置launchd环境变量 扩展动态切jdk脚本(.bash_profile) 背景 配置了动态jdk后,再次使用JD-GUI提示没有找到合适的jdk版本。 解决 看一下是不是真有问题…

《数据结构、算法与应用C++语言描述》- 平衡搜索树 -全网唯一完整详细实现插入和删除操作的模板类

平衡搜索树 完整可编译运行代码见:Github::Data-Structures-Algorithms-and-Applications/_34Balanced search tree 概述 本章会讲AVL、红-黑树、分裂树、B-树。 平衡搜索树的应用? AVL 和红-黑树和分裂树适合内部存储的应用。 B-树适合外部存储的…

gzip引入后node_modules中.cache compression-webpack-plugin占用内存过多

1.Gzip Gzip(GNU zip)是一种常见的文件压缩格式和压缩算法,通常用于在 Web 服务器上对静态资源文件进行压缩,以减小文件大小并加快文件传输速度。在前端开发中,经常会使用 Gzip 压缩来优化网站的性能。 Gzip 压缩通过…

云计算:OpenStack 配置云主机实例的资源实现内网互通

目录 一、实验 1. 环境 2.配置项目及用户 3.配置规格实例与镜像 4.配置VPC 5. 配置安全组 6. 创建云主机 cs_01 (cirros系统) 7.创建云主机 cs_02 (cirros系统) 8.创建云主机 cs_03 (cirros系统) …

AI大模型引领未来智慧科研暨丨ChatGPT在地学、GIS、气象、农业、生态、环境等领域中的高级应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮,可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

第十三章 Nacos服务注册和配置中心

Nacos服务注册和配置中心 gitee:springcloud_study: springcloud:服务集群、注册中心、配置中心(热更新)、服务网关(校验、路由、负载均衡)、分布式缓存、分布式搜索、消息队列(异步通信&#…

Python搭建代理IP池实现存储IP的方法

目录 前言 1. 介绍 2. IP存储方法 2.1 存储到数据库 2.2 存储到文件 2.3 存储到内存 3. 完整代码示例 总结 前言 代理IP池是一种常用的网络爬虫技术,可以用于反爬虫、批量访问目标网站等场景。本文介绍了使用Python搭建代理IP池,并实现IP存储的…

25、商城系统(七):商城项目基础功能pom.xml(重要),mybatis分页插件

截止这一章,我们就不把重心放在前端,后台的基础代码,因为后面都是业务层面的crud。 前端直接替换这两个文件夹即可,后台代码也直接复制: 一、重新更新一下所有的pom.xml 这个地方我踩了好多坑,最后得到一个完整的pom.xml,建议大家直接用我的pom.xml替换即可。 1.comm…

STM32 CubeMX工具在TSL2561驱动开发中的快速集成与调试技巧

在STM32 CubeMX工具中快速集成和调试TSL2561驱动的开发技巧,可以大大提高开发效率和减少调试时间。下面将为您介绍如何在CubeMX中进行快速集成和调试TSL2561驱动的技巧和步骤。 1. 创建新工程和选择芯片型号 打开STM32 CubeMX工具,点击“New Project”…

高光回眸:阿里云容器服务如何全面助力精彩亚运

作者:刘佳旭 谢乘胜 贤维 引言 2023 年,第 19 届杭州亚运会在杭州成功举办。在亚运之光和科技之光的交相辉映下,这届亚运会成为亚运史上首届“云上亚运”,用云计算创造了历史,赛事核心系统和转播全面上云&#xff0c…

deepin系统安装达梦数据库

deepin系统安装达梦数据库 1.下载安装包和执行可执行文件2.解压缩可执行文件3.运行安装程序 2.初始化3.达梦管理工具 deepin系统安装达梦数据库 1.下载安装包和执行可执行文件 进入deepin系统桌面, 打开终端, 输入命令uname -a 检查cpu架构,前往达梦官网下载合适的安装包, 目前…

将正规文法转化为正规式

将正规文法转化为正规式有以下几个规则: 通过一道例题来讲解: ①A-->aC|bA ②C-->bD ③D-->aC|bD| (1)首先将②带入③(不能将自身带入自身例如D-->aC|bD|,文法中带D,不能带入D) DabD|bD|(…

设计模式-多例模式

设计模式专栏 模式介绍多例模式和单例模式的区别应用场景Spring中多例模式的优缺点代码示例Java实现多例模式Python实现多例模式 多例模式在spring中的应用 模式介绍 多例模式是一种创建型设计模式,属于对象创建类型。多例模式的特点是允许一个类有多个实例&#x…

多模态大模型-CogVLm 论文阅读笔记

多模态大模型-CogVLm 论文阅读笔记 COGVLM: VISUAL EXPERT FOR LARGE LANGUAGEMODELS 论文地址 :https://arxiv.org/pdf/2311.03079.pdfcode地址 : https://github.com/THUDM/CogVLM时间 : 2023-11机构 : zhipuai,tsinghua关键词: visual language model效果:(2023…

HLS 2017.4 导出 RTL 报错:ERROR: [IMPL 213-28] Failed to generate IP.

软件版本:HLS 2017.4 在使用 HLS 导出 RTL 的过程中产生如下错误: 参考 Xilinx 解决方案:https://support.xilinx.com/s/article/76960?languageen_US 问题描述 DESCRIPTION As of January 1st 2022, the export_ip command used by Vivad…

旧衣回收小程序搭建,稳占回收市场

近几年我国大众的消费水平不断提升,闲置物品也相应增加了不少,尤其是闲置衣服,为了减少资源浪费,旧衣服回收回收行业受到了大众的关注。 目前我国旧衣服回收行业的市场规模达到了300多亿元,旧衣回收行业的商业价值非常…

AI绘图软件,科技之旅绘画

科技与艺术的碰撞总能产生令人惊叹的火花,现在小编要给大家介绍一款引领未来艺术潮流的AI绘图软件——首助编辑高手。这是一款将人工智能与创意绘画完美结合的软件,它将为你打开一扇全新的创意之门。 所需工具: 一个【首助编辑高手】软件 …

跨境电商卖家一般用海外云手机做什么?

近些年,海外云手机在跨境电商领域已经逐渐流行开来,但是对于许多人来说海外云手机还是比较陌生,它有什么作用?它可以用于哪些场景?在本文中,我们将详细跨境电商卖家一般是怎样使用海外云手机的。 1. 海外网…