前端需要去了解的nodejs知识(dgram)

简介: 对于前端开发,http服务是我们最长接触的通信服务,偶尔也会用到一些类似于聊天框的长链接应用,这些应用都不是基于HTTP开发的,HTTP是是无状态的短连接,说到长连接是不是首先会想到TCP,TCP是有状态的长连接协议。TCP和HTTP都是有连接的意思就是通信前需要建立连接,但是在计算机网络世界还有种无连接的协议UDP,下面我们就来了解下TCP在nodejs中的应用。

对于前端开发,http服务是我们最长接触的通信服务,偶尔也会用到一些类似于聊天框的长链接应用,这些应用都不是基于HTTP开发的,HTTP是是无状态的短连接,说到长连接是不是首先会想到TCP,TCP是有状态的长连接协议。TCP和HTTP都是有连接的意思就是通信前需要建立连接,但是在计算机网络世界还有种无连接的协议UDP,下面我们就来了解下TCP在nodejs中的应用。

dgram


UDP(用户数据报协议)协议

对于UDP,我们可以结合TCP一起来看,他们之间的区别以及共同之处。

网络异常,图片无法展示
|

  • UDP是无连接的用户数据报协议
  • UDP是不可靠的传输,数据在传输过程中可能会丢失
  • UDP的传输速度是更快的
  • UDP的连接是可以一对一,一对多,多对多,多对一的
  • UDP应用场合:流媒体或游戏之类对数据准确性要求不是很高的应用,例如我们常用的视频通话,目前发展比较好的智能家居也是基于UDP在传输协议

nodejs中的dgram

  • nodejs中dgram的UDP传输共有三种,分别为:单播,组播,广播
  • 单播:服务端向单个客户端发送数据
const dgram =require('dgram');
const server = dgram.createSocket('udp4');
server.on('listening',()=>{
    var address=server.address();
    console.log('listening on:'+address.address+':'+address.port)
})
// 单播发送数据
server.on('message',(message,remote)=>{
    console.log('收到了你的消息: ', message.toString());
    const address = remote.address;
    console.log('remote.address: ', remote.address);
    const port = remote.port;
    console.log('remote.port: ', remote.port);
    // server.send('我已经收到你们发送的消息了!',port,address)
})
server.on('error',()=>{
    console.log('服务其出错了');
})
//绑定8888端口
server.bind(4000)
  • 广播、组播:通过ip和子网掩码计算出广播地址
const dgram =require('dgram');
const server = dgram.createSocket('udp4');
const multicastAddr = "*******"
server.on('listening',()=>{
    var address=server.address();
    //设置广播发送
    server.setBroadcast(true);
    server.setMulticastTTL(128);
    setInterval(()=>{
        console.log('发送消息')
        server.send('我已经上线了!',5000,'广播地址**')
        server.send('大家好啊,我是服务端组播消息', 8061, multicastAddr);
    },3000)
    console.log('listening on:'+address.address+':'+address.port)
})
server.on('error',()=>{
    console.log('服务其出错了');
})
//绑定8888端口
server.bind(4000)
  • 启动客户端服务
const dgram =require('dgram');
const client = dgram.createSocket('udp4');
// 需要和服务端设置的相同
const multicastAddr = "*******"
client.on("listening", () => {
    console.log("listening");
    //设置客户的组播地址
    client.addMembership(multicalAddress)\
})
client.on('message',(msg)=>{
    console.log('我收到了服务端发送的消息!')
    console.log('msg: ', msg.toString());
    client.send(`hello,I am client`,4000,'localhost');
})
client.on("close", () => {
    console.log("socket已经关闭");
})
client.bind(5000,"127.0.0.1")

总结


UDP协议最经典的应用应该就是微信端视频聊天了,视频聊天追求的是时效性,而TCP为了保证数据的准确性会在进行回复,重传,网络探测等等一系列的控制,这些都影响了传输的时效性,因此对于追求快速传输且对数据准确性要求不太高的应用UDP就是更好的选择。UDP在我们前端开发中其实接触的比较少,但我们可以和TCP一起了解,这两个协议许多都是相反的。一起学习的话应该更容易掌握。


相关文章
|
JavaScript 前端开发 API
Node.js在前端的妙用:打造更出色的Web体验
Node.js在前端的妙用:打造更出色的Web体验
687 5
|
前端开发
前端毕业设计|基于Vue+Nodejs实现游戏资讯平台(二)
前端毕业设计|基于Vue+Nodejs实现游戏资讯平台
240 0
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
1051 0
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
15478 23
|
JSON JavaScript 前端开发
JS的无限可能: 前端 精妙DOM技巧至Node.js的服务端
JS的无限可能: 前端 精妙DOM技巧至Node.js的服务端
|
JavaScript IDE 前端开发
前端开发工具配置 nodejs & git & IDE
前端开发工具配置 nodejs & git & IDE
|
资源调度 前端开发 JavaScript
前端 nodejs 命令行自动调用编译 inno setup 的.iss文件
前端 nodejs 命令行自动调用编译 inno setup 的.iss文件
|
前端开发 JavaScript 程序员
【从前端入门到全栈】Node.js 之核心概念
【从前端入门到全栈】Node.js 之核心概念
|
Web App开发 JavaScript 前端开发
前端Node.js面试题
前端Node.js面试题
|
Web App开发 JavaScript 前端开发
对于 前端 解释下 node.js的必要性
对于 前端 解释下 node.js的必要性
281 0

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    1229
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    553
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    426
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    427
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    539
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    715
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    1379
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    308
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    1154
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    495