首页 > 其他分享 >IM学习

IM学习

时间:2023-05-17 15:57:41浏览次数:41  
标签:实时性 WebSocket 轮询 学习 IM 掩码 数据

IM

实时性

发展:

  1. 短轮询:

  • 缺点:无脑消耗资源,因为有的时候并没用新的数据产生

  • 优点:技术和维护简单

长轮询:

  • 优点:降低了服务器请求负载,实时性有所提升,因为是主动等

  • 缺点:1. 在等待消息的过程中服务器需要开启消息查询线程,仍然存在无用功

    2. 实时性还存在不足:在轮询结束和下一次轮询发起之间的时间间隔之内仍有盲区

总结:轮询技术都存在实时性不足的缺点,因为HTTP协议的请求-----响应-----断开

归根到底,想要基于HTTP协议来实现IM,要达到真正的“实时性”,是相当勉强的。因为HTTP设计的目的,就是用“短连接”来简化传统TCP长连接通信带来的复杂性,而IM的实时性恰好要用到的又是TCP的长连接特性,所以这就是个悖论

2 . WebSocket

真正的实时性,大幅降幅负载,网络开销降低

建立连接:基于TCP,复用HTTP握手通道

数据帧(消息的最小单位)格式:

字段详细解释:http://www.52im.net/thread-3134-1-1.html

掩码算法:

数据传输:客户端和服务端建立连接后:后续的操作都是基于数据帧的传递,根据opcode来区分操作

  1. 数据分片:根据FIN来判断是否为最后一帧,opcode在数据交换的场景下表示的是数据类型

 

连接保持,心跳:

ping,pong

 

数据掩码的作用:首先并不是为了防止数据泄密,是为了防止早起协议版本的代理缓存污染攻击

在 WebSocket 协议中,客户端和服务器之间的数据传输可以使用数据掩码进行保护。发送方在发送数据之前,对数据内容进行掩码操作,而接收方在接收到数据后,对数据进行反掩码操作。掩码密钥(Masking Key)是一个随机生成的 32 位密钥,用于数据掩码和反掩码。

WebSocket 数据掩码的目的是增加数据传输的安全性,防止恶意中间人攻击,例如数据窃取、篡改、重放等。掩码的引入使得中间人很难识别和修改传输的数据内容,因为掩码密钥只在发送方和接收方之间共享,中间人无法得知。

然而,需要注意的是,WebSocket 数据掩码主要是为了保护数据传输过程中的安全性,而不是为了提供端到端的加密。虽然数据掩码可以防止一些简单的攻击,但它并不是一种全面的安全解决方案。对于敏感数据的传输,建议使用更强大的端到端加密机制,例如使用 SSL/TLS 建立加密的 WebSocket 连接。

标签:实时性,WebSocket,轮询,学习,IM,掩码,数据
From: https://www.cnblogs.com/zz01/p/17408998.html

相关文章

  • .NET入门相关学习
    2023/05/17记录html标签使用练习1<divstyle="background-color:lightgreen;text-align:center;width:200px;margin:10px;display:inline-block;vertical-align:top">2<pstyle="text-align:left;margin:10px">(居左)</p>3......
  • S3 MATLAB 图像处理综合实验平台 包括以下功能 Read image-
    S3MATLAB图像处理综合实验平台包括以下功能Readimage-open-gallery导入图片Resolutions图像模糊处理Imagehistogray灰度直方图显示,分水岭图像分割,gamma变换,直方图均衡化SpaticalFiltering图像添加噪声和滤波,以及图像锐化Frequencydomain一维和二维图像傅里叶变化Mo......
  • 三相逆变器双闭环控制MATLAB/Simulink模型,外环采用PR控制,内环采用比例控制。
    三相逆变器双闭环控制MATLAB/Simulink模型,外环采用PR控制,内环采用比例控制。包含仿真模型,参考文献及设计报告,设计报告中总结了逆变器的建模和PR控制的原理,推荐初学者参考。参数整定采用matlab的.m文件。ID:7420692918210168......
  • 学习日记——初识JavaScript
    1.JS的组成和基本结构①JavaScript定义:(1)脚本语言(2)有一定的安全性(3)一种基于对象的一种语言(4)可以定义一堆的事件(方法/函数)并进行调用②组成部分: (1)EcmaScript:核心语法。Js前身(2)Dom(文档对象模型)(3)Bom(浏览器对象模型)③JavaScript基本结构<scripttype="text/javascript">alert();......
  • 三相四桥臂逆变器MATLAB/Simulink仿真模型,接不平衡负载时的调制算法。
    三相四桥臂逆变器MATLAB/Simulink仿真模型,接不平衡负载时的调制算法。接非线性负载时的多PR控制器并联算法。提供仿真模型、参考文献ID:9835693184071748......
  • Java学习计划
    复习计划及学习网站的时间表如下所示:日期科目学习网站1月1日基本语法和变量类型CodecademyJava课程1月4日运算符和控制语句CourseraJava程序设计1月7日数组、集合和泛型UdemyJava基础课程1月10日类与对象PluralsightJava课程1月13日继承、抽象类......
  • 【C++ Primer】第二章(2 ~ 6节)
    变量变量提供一个具名的、可供程序操作的存储空间。C++中变量和对象一般可以互换使用。变量定义(define)定义形式:类型说明符(typespecifier)+一个或多个变量名组成的列表。如intsum=0,value,units_sold=0;初始化(initialize):对象在创建时获得了一个特定的值。初......
  • 什么是 !important
     CSS中的!important规则用于增加样式的权重。!important 与优先级无关,但它与最终的结果直接相关,使用一个!important规则时,此声明将覆盖任何其他声明。实例#myid{ }.myclass{ }p{ }https://www.81rz.com/mnst47/......
  • zImage的压缩、解压以及性能对比
    关键词:Image,zImage,piggy,gzip,lzo,xz,lzma等等。1.zImage的压缩zImage是Image经过压缩后,加上解压缩头后生成的文件:Image->piggy_data->piggy.o->vmlinux(compressed)->zImage。Image经过压缩生成piggy_data:cmd_arch/arm/boot/compressed/piggy_data:={catarch/arm/bo......
  • SpringBoot学习笔记--系列文章
    随笔分类 -  SpringBootSpringBoot学习笔记(八)——JWT、(Vue3、Axios、Vue-Router、TypeScript实现授权与验证示例)SpringBoot学习笔记(七)——综合示例BookStore图书管理系统SpringBoot学习笔记(六)——分页、跨域、上传、定制banner、Lombok、HutoolSpringBoot学习......