深入浅出node.js:7 网络编程

跟着《深入浅出nodejs》系统学习 node 以及相关面试题一网打尽 内容持续更新中,内容较多难免疏漏,有不对的欢迎指正,有遗漏的部分会陆续补充。欢迎关注我的专栏《一网打尽所有面试题。 阅读详情

   利用Node可以十分方便地搭建网络服务器。在Web领域,大多数的编程语言需要专门的Web服务器作为容器,如ASP、ASP.NET需要IIS作为服务器,PHP需要搭载Apache或Nginx环境等,JSP需要Tomcat服务器等。但对于Node而言,只需要几行代码即可构建服务器,无需额外的容器。

   Node提供了net, dgram, http, https这4个模块,分别用于处理TCP, UDP, HTTP, HTTPS。适用于服务器端和客户端

7.1 构建TCP服务

    

7.2 构建UDP服务


7.3 构建HTTP服务

    

7.4 构建WebSocket服务

    它与Node之间的配合堪称完美,其理由有两条:

  • WebSocket客户端基于事件的编程模型与Node中自定义事件相差无几
  • WebSocket实现了客户端与服务器端之间的长连接,而Node事件驱动的方式十分擅长与大量的客户端保存高并发连接

除此之外,WebSocket与传统HTTP有如下好处:

  • 客户端与服务器端只建立一个TCP连接,可以使用更少的连接
  • WebSocket服务器端可以推送数据到客户端,这远比HTTP请求响应模式更灵活、更高效。
  • 有更轻量级的协议头,减少数据传送量。

   WebSocket最早是作为HTML5重要特性而出现的

   客户端的应用示例:


   在WebSocket之前,网页客户端与服务器端进行通信最高效的是Comet技术。实现Comet技术的细节是采用长轮询或iframe流。长轮询的原理是客户端向服务器端发起请求,服务器端只在超时或有数据响应时断开连接;客户端在收到数据或者超时后重新发起请求。这个请求行为拖着长长的尾巴,是故用Coment(彗星)来命名它。

    使用WebSocket的话,网页客户端只需一个TCP连接即可完成双向通信,在服务器端与客户端频繁通信时,无须频繁断开连接和重发请求。连接可以得到高效应用,编程模型也十分简洁。

    相比HTTP,WebSocket更接近于传输层协议,它并没有在HTTP的基础上模拟服务器端的推送,而是在TCP上定义独立的协议。让人迷惑的部分在于WebSocket的握手部分是有HTTP完成的,使人觉得它可能是基于HTTP实现的。

    协议主要分为两个部分:握手和数据传输。P182

    握手:

    数据传输:


7.5 网络服务与安全

      明文传递是容易被监控,为此将数据加密后在传输,但是对于应用层协议而言,仍然希望能够透明地处理数据,而无须操心网络传输过程中的安全问题。

      网景公司推出了SSL(安全套接层),对传输层加密,    随后IETF将其标准化,称为TLS(安全传输层协议)

      Node在网络安全上提供了3个模块:

           crypto:用于加密解码

           tls模块:建立在TLS/SSL加密的TCP连接上

           https:完全与http模块接口一致,只是建立在安全的连接上

     TLS/SSL:

           密钥:TLS/SSL是一个公钥/私钥的结构,它是一个非堆成的结构,每个服务器端和客户端都有自己的公私钥。公钥用来加密要传输的数据,私钥用来解密接收到的数据。公钥和私钥是配对的,通过公钥加密的数据,只有通过私钥才能解密,所以在建立安全传输之前,客户端和服务器端之间需要互换公钥。客户端发送数据是要通过服务器端的公钥进行加密,服务器端发送数据时则需要客户端的公钥进行加密,如此才能完成加密解密的过程。P187

           为了解决出现中间人攻击(交换公钥的过程中)这种问题,数据传输过程中还需要对得到的公钥进行认证,以确认得到的公钥是出自目标服务器。

           引入数字证书,包含了服务器的名称和主机名、服务器的公钥、签名颁发机构的名称、来自签名颁发机构的签名。在连接建立前,会通过证书中的签名确认收到的公钥是来自目标服务器的,从而产生信任关系。

           数字证书:CA(数字证书认证中心)的作用是为站点颁发证书,且这个证书中具有CA通过自己的公钥和私钥实现的签名。

           通过CA机构颁发证书通常是一个烦琐的过程,需要付出一定的精力和费用。对于中小型企业而言,多半是采用自签名证书来构建安全网络的。P188

           CA机构将证书颁发给服务器端后,证书在请求的过程中会被发送给客户端,客户端需要通过CA的证书验证真伪。如果是知名的CA机构,它们的证书一般预装在浏览器中。如果是自己扮演CA机构,颁发自有签名证书则不能享受这个福利。

    HTTPS服务:需要用到私钥和签名证书




    





Node-RED系列教程-13扩展节点之s7节点 ​​前言 目标:掌握s7节点中各个节点的基本使用方法。 懂的朋友欢迎订阅。 一、演示环境 win10系统,Node-RED最新版本2.1.3(2021年11月21号)。 二、模块与节点 安装node-red-contrib-s7模块。 三、应用讲解 1、s7 control节点 此节点用于配置与S7 PLC进行通信的相关参数,作为一个配置节点使用。 填写IP地址: 其他配置可先保持默认,机架号和槽号根据PLC组态实际情况进行调整。 循环周期和超时时间... 阅读详情

相关推荐

nodeS7:用于与西门子 S7 PLC 通信的 Node.JS 库

节点S7 NodeS7 是一个库,允许使用西门子 S7 以太网协议 RFC1006 与 S7-300/400/1200/1500 PLC 进行通信。 本软件与 Siemens 没有任何关系,I 也没有。S7-300、S7-400、S7-1200 和 S7-1500 是 Siemens AG 的商标。 警告 全面测试您所做的一切。 在写入 PLC 内的随机内存区域可能会花费您金钱的情况下,请备份您的数据并进行真正的测试。 如果这可能会伤害某人或更糟,请考虑使用其他软件。 安装 使用 npm: npm install nodes7 使用纱线: yarn add nodes7 优化 它以三种方式进行了优化 - 对从 PLC 请求的大量项目进行排序,并决定要请求的整体数据区域,然后将多个小请求组合在一个数据包中或将数据包的数量组合到 PLC 的最大长度支持,然后它一次发送多个数据包,以获

【亲测免费】 NodeS7:基于JavaScript的Siemens S7 PLC通信库

NodeS7 是一个开源项目,旨在提供一个基于 JavaScript 的库,用于与西门子 S7 PLC(可编程逻辑控制器)进行通信。该项目使用 Node.js 作为主要的编程语言,通过 Siemens S7 Ethernet 协议 RFC1006 实现与 S7-300/400/1200/1500 PLCs 的通信。NodeS7 的设计目标是简化 PLC 的编程和通信过程,同时确保高效和稳定的数据交...

gitblog_00910的博客 913

Web-3D-HMI-Demo:带有node.js,Three.js和Nodes7的基于Web的3D Roboter动画演示

Web-3D-HMI-演示 带有node.js,Three.js和Nodes7的基于Web的3D Roboter动画演示 这是为机器人手臂创建基于Web的3D HMI的演示,可以从S7控制器进行控制。 机器人模型是从Kuka KR300 CAD模型(STEP格式)创建的,该模型使用FreeCAD软件分成了单个部分。 单个零件以OBJ格式导出,以我的经验,在相对较小的文件大小的情况下,可获得最佳效果。 然后,由three.js附带的OBJLoader加载OBJ格式的零件。 从S7程序中读取5个轴中每个轴的设定值。 通过robot.html上的一些Java脚本将旋转到所需的设定点。 可以从Web GUI配置轴跟随设定点的转速。 安装 必需的Javascript模块是通过npm下载并安装的。 在工作目录中调用: npm install 会下载它们并将其中的three.js文件复制到公共目录

使用Node.js编写S7协议的代码:node-snap7与nodes7

本文介绍了在 Node.js 环境下,通过 node-snap7 和 nodes7 两个库实现与西门子 PLC 的 S7 协议通信。文章详细讲解了如何安装和使用这两个库,介绍了它们在连接、读取、写入和断开连接过程中的不同实现。特别强调了使用这两个库时的注意事项,包括数据类型、偏移量匹配以及缓冲区的使用,帮助开发者更好地理解和应用 S7 协议通信。最后,文章提供了完整的代码示例,供读者参考。

qq_42487744的博客 2954

IBTrACS v04r01 数据提取实战:Pandas 筛选 JTWC/CMA/JMA 3机构最佳路径数据

本文详细介绍了如何使用 Pandas 高效提取和处理 IBTrACS v04r01 数据集中的最佳路径数据,特别针对 JTWC、CMA 和 JMA 三家权威机构的数据进行对比分析。通过构建可复用的数据提取函数,解决多机构数据质量差异问题,并提供高级分析与可视化应用示例,助力热带气旋研究。

clijovtbq401783153的博客 515

实战指南:在摩尔线程GPU上部署AI模型的完整流程

本文提供了一份详尽的实战指南,手把手教你如何在摩尔线程GPU上成功部署AI模型。内容涵盖从驱动安装、Docker环境配置,到核心的代码适配与模型运行全流程,并分享了性能调优技巧与常见避坑方法,旨在帮助开发者高效利用国产硬件进行AI应用开发。

weixin_29271263的博客 534

Siemens S7 PLC 通信库 - nodes7 使用指南

--- ## 项目介绍 **nodes7** 是一个基于 JavaScript 的库,用于通过 ISO-on-TCP(RFC1006)协议或MPI/PPI/DP USB适配器与西门子S7系列可编程逻辑控制器(PLCs),包括S7-200、300、400、1200和1500进行通讯。该项目是完全重写并灵感来源于 `plcpeople/nodeS7`,强调了对多种型号PLC的支持,并提供了一种高效...

gitblog_00067的博客 1917

【35】软考软件设计师——设计模式代码填空(C++版)满分精讲|第5/6题二选一必考

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第35篇,聚焦下午选做题**第5/6题C++版设计模式代码填空**,与上一篇Java版形成双子配套,单题分值稳定12~15分。全文超4000字深度拆解C++独有核心考点:虚函数/纯虚函数、构造与析构函数规范、继承权限、模板类编程在设计模式中的应用;精讲单例、工厂、策略、观察者、适配器五大高频模式的C++专属代码写法,标注所有填空核心点位、语法陷阱、内存安全规范

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 543

一本让Node.js开发者「血脉偾张」的硬核指南——《深入浅出Node.js》深度解读

在JavaScript统治前端的时代,Node.js的横空出世彻底打破了「浏览器孤岛」。当开发者们还在为前后端语言割裂而苦恼时,《深入浅出Node.js》如同Node.js世界的「九阳真经」,将异步I/O、事件驱动、内存控制等核心武学融会贯通。这本书不仅是技术手册,更是Node.js开发者突破瓶颈的「通关秘籍」。

Amon的专栏 1880

【华为OD机试真题 新系统】1021、API请求日志去重分析 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

【华为OD机试真题 新系统】1021、API请求日志去重分析 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2026e卷,od机试,2026E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2026华为od,如何备

KJ.JK 144

uniapp - 解决苹果ios真机运行报错:错误:请查看是否设备未加入到证书列表或者确认证书类型是否匹配(HbuilderX运行IOS手机出现问题,uniapp运行到IOS真机提示请查看是否设备未)

uni-app,ios苹果,App平台端,uniapp运行到IOS真机提示错误:请查看是否设备未加入到证书列表或者确认证书类型是否匹配,UUID在哪里,uniApp运行到ios真机报错解决,安装自定义基座App失败,没找到有计划资源,证书、标识符和描述文件,证书标识符和描述文件下面没有选项怎么回事,HBuilder真机调试报错请查看是否设备未加入到证书列表或者确认证书类型是否匹配,UniApp运行到IOS真机提示,授权的设备才可以直接安装基座,添加调试的IOS设备,在Devices中,添加手机设备UUID

🏆 前端领域优质创作者 1万+

《深入浅出Node.js》学习笔记

异步I/O事件与回调函数单线程与其余线程是无法共享任何状态的无法利用多核Cpu。错误会引起整个应用退出,应用的健壮性值得考验。大量计算占用cpu导致无法继续调用异步I/O。解决单线程大计算量的问题。跨平台单元测试主要包括断言、测试框架、测试用例、测试覆盖率、mock、持续集成等几个方面。

Leon_Chenl的博客 2363

【即插即用模块】注意力篇 | TGRS 2025 | MFA聚特征+HPDown保细节+HFF融层级,三大模块各司其职,性能翻倍!

本文介绍了MTMLNet网络中的三大核心模块:MFA(多阶段特征聚合)、HPDown(混合池化下采样)和HFF(分层特征融合)。MFA通过双尺度深度卷积和注意力机制增强特征提取能力;HPDown结合平均池化和最大池化,有效保留下采样过程中的特征信息;HFF采用三注意力机制实现自适应特征融合。这三个模块协同工作,在红外小目标检测与分割任务中取得了SOTA效果。实验表明,各模块在特征提取、信息保留和融合方面均优于传统方法,可灵活应用于各类视觉任务中。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 282

《深入浅出 node.js 》笔记part2

相关链接 github 更多文章 推荐 在线阅读 文章目录相关链接第 6 章 理解 BufferBuffer 对象Buffer 内存分配Buffer 的转换Buffer 的拼接Buffer 与性能第 7 章 网络编程构建 TCP 服务构建 UDP 服务HTTP1.HTTP 请求2.HTTP 响应3.HTTP 服务的事件4.HTTP 客户端构建 WebSocket 服务HTTPS 第 6 章 理...

雲的博客 519

理想L9高通QAM8797座舱域控制器全拆解|全网独家复现 硬件架构升级、电源散热优化、多屏低延迟交互、车机系统赋能高端智能座舱落地

随着智能汽车向舱驾一体、全域智能化、多模交互方向迭代,传统单一功能座舱芯片已无法满足多屏高刷渲染、全车AI语音、车内视觉感知、高速车载通信的叠加算力需求。2026款全新理想L9作为旗舰级智能SUV,全面搭载高通新一代旗舰座舱域控制器QAM8797,搭配自研马赫M100 AI芯片、国产车规主控芯片,构建起高性能、高可靠、低延迟的车载中央计算平台。

getusushu的博客 376

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

《深入浅出Node.js》和《MySQL与MariaDB学习指南》的一点感想

朴灵大大的《深入浅出Node.js》 朴灵真名田永强,文艺型码农,就职于阿里巴巴数据平台,资深工程师,Node.js布道者,写了多篇文章介绍Node.js的细节。活跃于CNode社区,是线下会议NodeParty的组织者和JSConf China(沪JS和京JS)的组织者之一。热爱开源,多个Node.js模块的作者。个人GitHub地址:http://github.com/Jackso...

天渺(喵)工作室 454

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

精读《深入浅出Node.js》

前言 如果你想要深入学习Node,那你不能错过《深入浅出Node.js》这本书,它从不同的视角介绍了 Node 内在的特点和结构。由首章Node 介绍为索引,涉及Node 的各个方面,主要内容包含模块机制的揭示、异步I/O 实现原理的展现、异步编程的探讨、内存控制的介绍、二进制数据Buffer 的细节、Node 中的网络编程基础、Node...

weixin_34151004的博客 224

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

深入浅出Node.js(一):什么是Node.js(转贴)

以下内容转自:http://www.infoq.com/cn/articles/what-is-nodejs/ 作者:崔康 【编者按】:Node.js从2009年诞生至今,已经发展了两年有余,其成长的速度有目共睹。从在github的访问量超过Rails,到去年底Node.jsS创始人Ryan Dalh加盟Joyent获得企业资助,再到今年发布Windows移植版本,Node.js的前景获得...

weixin_30872671的博客 150

七天学会Node.js(汇总)

七天学会Node.js(汇总) 文章目录七天学会Node.js(汇总)1. NodeJS基础什么是NodeJS有啥用处如何安装安装程序编译安装如何运行权限问题模块requireexportsmodule模块初始化主模块完整示例二进制模块小结2. 代码的组织和部署模块路径解析规则包(package)index.jspackage.json命令行程序LinuxWindows工程目录NPM下载三方包安装命令行程序发布代码版本号灵机一点小结3. 文件操作开门红小文件拷贝大文件拷贝API走马观花Buffer(数据块)

qq_43456781的博客 1186

Node应该怎么学

最近在各种社区看到很多同学在咨询“作为前端Node应不应该学”,“Node应该怎们学”,这里就我自己的学习经历做一个总结,来社区的同学交流下,希望能帮到一定层级的同学Node是JavaScript的一种宿主环境,为JS提供了一种runtime环境,就像浏览器一样,我们写的JS可以在这种环境下跑起来;Node是单线程,异步I/O的我们总是会在社区看到一种说法:“javascript是单线程的”对吧,其实这是不对的,javascript也可以多线程执行,是执行javascript的数组换进提供的是单线程,异步的

郊眠寺 1179

nodejs深入浅出pdf

下载地址:网盘下载 内容简介······ 本书从不同的视角介绍了 Node 内在的特点和结构。由首章Node 介绍为索引,涉及Node 的各个方面,主要内容包含模块机制的揭示、异步I/O 实现原理的展现、异步编程的探讨、内存控制的介绍、二进制数据Buffer 的细节、Node 中的网络编程基础、Node 中的Web 开发、进程间的消...

weixin_30367543的博客 819

网络编程:构建 TCP 服务

1. 创建简易TCP服务端 var net = require('net'); var server = net.createServer(); server.on('connection', function(socket){ socket.write("欢迎光临《深入浅出Node.js》示例:\n"); }); server.on('end', function () { c...

xk_moving的博客 283
上一篇: Attention注意力机制--原理与应用
下一篇: 深入浅出node.js:6 理解Buffer
CopperDong
博客等级 码龄14年 1205粉丝 466原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值