websocket在线测试(WebSocket是什么原理)

1. websocket在线测试,WebSocket是什么原理?

首先我们看一下websocket的出现背景,我们知道http系列协议是建立在tcp上的,理论上,他是可以可以双向通信的。但是http1.1之前,服务器没有实现推送的功能。每次都是客户端请求,服务器响应。下面看一下http协议关于请求处理的发展。

http1.0的时候,一个http请求的生命周期是客户端发起请求,服务器响应,断开连接。但是我们知道tcp协议的缺点就是,三次握手需要时间,再加上慢开始等特性,每一个http请求都这样的话,效率就很低。http1.1的时候,默认开启了长连接(客户端请求中设置了keep-alive头),服务器处理一个请求后,不会立刻关闭连接,而是会等待一定的时间。如果没有请求才关闭连接。这样浏览器不仅可以在一个tcp连接中,不断地发送请求(服务器也会限制一个连接上可以处理的请求阈值),甚至可以一次发很多个请求。这就是http1.1的管道化(pipeline)技术。但是他也有个问题,因为对于基于http协议的客户端来说,虽然他可以发很多请求出去,但是当一个请求对于的回包回来时,他却无法分辨是属于哪个请求的。所以回包只能按请求顺序返回,这就引来了另一个问题-线头阻塞(Head-of-Link Blocking)。并且http1.1虽然支持长连接,但是他不支持服务端推送(push)的能力。如果服务器有数据要给客户端,也只能等着客户端来取(pull)。来到了http2.0,不仅实现了服务器推送,还使用了帧(iframe),流(stream)等技术解决了线头阻塞的问题,http2.0在一个tcp连接中,可以同时发送多个http请求,每个请求是一个流,一个流可以分成很多帧,有了标记号,服务器可以随便发送回包,客户端收到后,根据标记,重新组装就可以。以上是http协议的关于请求的一些发展,而websocket就服务端推送提供了另外一种解决方案。他本质上是在tcp协议上封装的另一种应用层协议(websocket协议)。因为他是基于tcp的,所以服务端推送自然不是什么难题。但是在实现上,他并不是直接连接一个tcp连接,然后在上面传输基于websocket协议的数据包。他涉及到一个协议升级(交换)的过程。我们看看这个过程。1 客户端发送协议升级的请求。在http请求加上下面的http头

2 服务器如果支持websocket协议的话,会返回101状态码表示同意协议升级,并且支持各种配置(如果服务器不支持某些功能或版本,或告诉客户端,客户端可以再次发送协议升级的请求)。服务会返回形如下面的http头(可以参考websocket协议)。

3 这样就完成了协议的升级,后续的数据通信,就是基于tcp连接之上,使用websocket协议封装的数据包。

下面我们通过wireshark来了解这个过程。首先我们启动一个服务器(ip:192.168.8.226)。

我们可以直接在浏览器控制台进行测试

这时候,我们看看wireshark的包。

首先看前面三条记录,这是tcp三次握手的数据包。这个我们都了解了,就不展示。接着看第四条记录。展开后如下。

我们看到建立tcp连接后,浏览器发了一个http请求,并带上了几个websocket的数据包。接着看下面的一条。

服务返回了同意升级协议或者说交换协议。从服务器代码中我们看到,在建立连接的时候我们给浏览器推送了一个get it的字符串。继续看上面的记录。

这就是服务器给浏览器推送的基于websocket协议的数据包。具体每个字段什么意思,参考websocket协议就可以。继续往下看一条记录是针对服务器推送的数据包的一个tcp的ack。最后我们可以顺便看看最后三条写着keep-alive的记录。这就是之前文章里讲到的tcp层的keep-alive。因为我们一直没有数据传输,所以tcp层会间歇性地发送探测包。我们可以看看探测包的结构。

有一个字节的探测数据。如果这时候我们发送一个数据包给服务器,又是怎样的呢。

白色背景的三条数据,分别是浏览器发送给服务器的数据,服务器推送回来的数据。tcp的ack。我们发现,服务器给浏览器推送的时候,浏览器会发送ack,但是浏览器给服务器发送的时候,服务器貌似没有返回ack。下面我们看看为什么。首先我们看浏览器发出的包。

再看看服务器给浏览器推送的数据包。

我们发现服务器(tcp)推送消息的时候把ack也带上了。而不是发送两个tcp包。这就是tcp的机制。tcp不会对每个包都发ack,他会累积确认(发ack),以减少网络的包,但是他也需要保证尽快地回复ack,否则就会导致客户端触发超时重传。tcp什么时候发送确认呢?比如需要发送数据的时候,或者超过一定时间没有收到数据包,或者累积的确认数量达到阈值等。既然研究了tcp,我们不妨多研究点,我们看一下,如果这时候关闭服务器会怎样。

服务器会发送一个重置包给浏览器,告诉他需要断开连接。继续,如果是浏览器自己调用close去关闭连接会怎样。

我们看到websocket首先会发送一个FIN包给服务器,然后服务器也会返回一个FIN包,然后才开始真正的四次挥手过程。并且四次挥手的第一个fin包是服务器发的。

我们再来看看安全版本的websocket。我们启动一个https服务器。

然后在浏览器控制台执行。

然后来看看wireshark。

首先建立tcp连接,然后建立tls连接。后续的数据通信就可以基于加密来进行了。不再重复。后续分析tls协议的时候再分析。

经过一系列的分析,我们对websocket协议应该有了更多的了解,最后再说一个关于websocket的点。我们发现如果在websocket连接上,一直不通信的话,websocket连接所维持的时间是依赖tcp实现的。因为我们发现tcp层会一直发送探测包。达到阈值之后,连接就会被断开。所以我们想维持websocket连接的话,需要自己去发送心跳包,比如ping,pong。

总结:本文分析了websocket的基本原理,但不涉及协议的内容,如需了解协议的内容,可以参考rfc文档。

websocket在线测试(WebSocket是什么原理)

2. 101代码与102代码区别?

101代码和102代码分别是电话报警和短信报警的警情代码。

101代码是指电话报警,是市民向公安机关报警或求助的电话号码,是中国大陆公安机关的统一紧急报警电话号码。市民通过撥打101电话,可向公安机关报告情况、求助呼叫,公安机关接到报警后将根据不同需求向现场派警,提供相关坐标,以便及时处理紧急情况。

102代码是指短信报警,市民向公安机关报警或求助时,也可以通过发送包含相关信息的短信(例如“劫匪劫持了我们,请求救援!”),向公安机关发出求助信号,以便公安机关及时进行处理。在使用短信报警时,需要首先在相关机构进行注册,获取使用权限,并提供相关的身份信息。

总的来说,两种报警方式都旨在为民众报警提供方便和保障,市民可以根据自己的需求和实际情况选择合适的报警方式。

3. boot使用shiro还是secuitry好?

Shiro和Spring Security都是安全框架,简单说是对访问权限进行控制,他们都提供了认证、授权、加密、会话管理;这里要提一句,通常这种安全框架不会去帮助我们维护用户/权限;这些需要我们自己去实现,然后通过相应的接口注入给安全框架。

那么Spring Boot项目的话,是使用Shiro还是Spring Security呢?还是先看看两者有什么区别和各自的优缺点:

Shiro的配置和使用比较简单,Spring Security上手复杂些;

Shiro依赖性低,理论上不需要任何框架和容器,可以独立运行(但是最常用的环境还是JavaEE);Spring Security依赖Spring容器;

Shiro支持Web项目和非Web项目;在集群环境中,Shiro可以独立于容器;

Spring Security基于Spring开发,项目若使用Spring(包括Spring Boot)作为基础,配合Spring Security做权限更加方便;Shiro需要和Spring进行整合(不过这个复杂程度可以忽略);

Spring Security对Oauth、OpenID也有支持,Shiro则需要自己手动实现。

总结一下,Spring Boot使用Shiro还是Spring Security,我更倾向于Shiro。

一方面虽然Shiro需要和Spring Boot做整合,但是这个过程不复杂;

另外一方面Oauth、OpenID站点间统一登录功能,会有更好的实现方案,很少在这个层级实现,所以Spring Security的这两个功能可以不考虑。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

4. sw和swr区别?

SW和SWR是无线通信中常用的两个参数,它们分别代表着不同的含义:

SW(Standing Wave):SW是驻波比(Standing Wave Ratio)的缩写,用于描述无线电频率传输线上的驻波情况。驻波是指在传输线上由于信号的反射而形成的波动。SW是反映传输线上驻波程度的一个无单位的比值。SW的取值范围通常为1到无穷大,其中1表示完全匹配,即无驻波,而无穷大表示完全不匹配,即最大驻波。

SWR(Standing Wave Ratio):SWR也是驻波比(Standing Wave Ratio)的缩写,它是SW的一种常用表达方式。SWR是指传输线上最大电压和最小电压之比的绝对值。SWR是一个无单位的比值,通常用数字表示。SWR的取值范围从1到无穷大,其中1表示完全匹配,即无驻波,而无穷大表示完全不匹配,即最大驻波。

总结来说,SW和SWR都是用来描述无线通信中传输线上驻波情况的参数,它们都反映了信号的匹配程度。SW是一个无单位的比值,而SWR是一个无单位的绝对值。在实际应用中,SWR更常用,因为它更直观地表示了驻波的程度。

5. pychrome使用教程?

pychrome是一个Python库,用于与谷歌Chrome浏览器通信。它可以通过远程调试协议与Chrome浏览器交互,实现自动化浏览器操作和数据爬取。

以下是pychrome的使用教程:

1. 安装pychrome库:

```

pip install pychrome

```

2. 打开Chrome的调试端口:

通过在Chrome的启动参数中添加 `--remote-debugging-port` 参数来打开调试端口。例如:

```

chrome.exe --remote-debugging-port=9222

```

3. 创建一个pychrome实例:

```python

import pychrome

# 创建一个浏览器实例

browser = pychrome.Browser(url="http://127.0.0.1:9222")

```

4. 创建一个浏览器标签:

```python

# 创建一个浏览器标签

tab = browser.new_tab()

```

5. 注册回调函数:

```python

# 注册回调函数,处理事件

def callback(message):

print(message)

# 设置回调函数

tab.Network.requestWillBeSent = callback

```

6. 开始网络抓包:

```python

# 启用网络抓包

tab.Network.enable()

```

7. 加载一个网页:

```python

# 加载一个网页

tab.Page.navigate(url="https://www.example.com")

```

8. 等待网页加载完成:

```python

# 等待网页加载完成

tab.wait(5) # 等待5秒

```

9. 关闭浏览器标签和浏览器实例:

```python

# 关闭标签和浏览器

browser.close_tab(tab)

browser.close_browser()

```

这是一个基本的pychrome使用教程,你可以根据具体需求,按照pychrome的文档进一步学习和使用。

6. spring的核心技术有哪些?

一、Spring不近是一个框架,已然成为一种生态。

二、简化开发

2.1基于POJO的轻量级和最小侵入性编程

2.2通过依赖注入和面向接口松耦合

2.3基于切面和声明式编程

2.4通过切面和模板减少样板式代码

三、Spring系统架构图

四、spring之核心模块

模块名称 主要功能

spring-core 依赖注入IOC与DI的最基本实现

spring-beans Bean工厂与Bean的装配

spring-context 定义基础的spring的Context上下文及IOC容器

spring-context-support 对springIOC容器的扩展,以及IOC子容器

spring-context-indexer Spring类管理组件和Classpath扫描

spring-expression Spring表达式语言

五、spring之切面编程模块

模块名称 主要功能

spring-aop 面向切面编程的应用模块

spring-aspects 集成AspectJ,AOP应用框架

spring-instrument 动态Class Loading 模块

六、spring之数据访问与集成模块

模块名称 主要功能

spring-jdbc spring提供JDBC抽象框架的主要实现模块,简化Spring jdbc操作

spring-tx Spring jdbc事物控制实现模块

spring-orm 主要集成Hibernate,Jpa,java Date Objects

spring-jms java Messaging service能够发送和接收信息

spring-oxm java对像映射XML数据,或者将XML数据映射成Java对象

七、spring之web模块

模块名称 主要功能

spring-web 提供web支持,主要建立与核心容器之上,通过Sercvlet或者 Listeners初始化IOC容器

spring-webmvc 实现springMVC(model-view-Controller)的web应用

spring-websocket 主要是与web前端的全双工通讯的协议

spring-webflux 新的非堵塞函数式Reactive Web 框架,可以用来建立异步的,非 阻塞,事件驱动服务

八、spring之通信报

模块名称 主要功能

spring-messaging spring框架集成一些基础的报文传送应用

九、spring之集成测试

模块名称 主要功能

spring-test 提供测试支持

十、spring各模块之间的依赖关系

我是阳光随馨馨,如果你看完了,就点个赞,加个关注,转发一下,谢谢!

7. 学习web前端开发?

黑马程序员web前端中级程序员学习路线图,含配套视频,前端工具,源码等。

黑马程序员学习路线图及能掌握的能力(总,以下会分阶段,加上配套学习视频,小伙伴可继续往下看!)

第一阶段:HTML5+css

配套学习视频:

前端小白零基础入门HTML5+CSS3

第二阶段:移动web网页开发

配套学习视频:

2018移动web进阶教程

第三阶段:JavaScript网页编程

配套学习视频:

前端与移动开发基础入门到精通

javaScript零基础通关必备教程

第四阶段:Node.js与Ajax

配套学习视频:

Nodejs教程精讲

ajax从入门到精通

第五阶段:vue.js项目实战

配套学习视频:

4小时+5个拣选案例让你快速入门Vue.js

2018年Vue.js深入浅出教程

第六阶段:微信小程序

配套学习视频:

一天教你打造企业级微信小程序

微信小程序-个人语音接口功能

分分钟快速入门小程序开发

零基础玩转微信小程序

2小时轻松实现人脸识别的小程序

第七阶段:React.js项目实战

配套学习视频:

Reactjs入门教程

ReactJs精品教程

第八阶段:框架阶段与原理

第九阶段:移动APP开发

第十阶段:node.js进阶

第十一阶段:可视化游戏

第十二段阶段:架构与运维

还有前端免费工具下载

另外,关注加转发,然后私聊我发送:前端,就能获得上面这些资源咯。

免责声明:本文作者:“游客”,版权归作者所有,观点仅代表作者本人。本站仅提供信息存储分享服务,不拥有所有权。信息贵在分享,如有侵权请联系ynstorm@foxmail.com,我们将在24小时内对侵权内容进行删除。
(169)
无线设备(WIFI网络和手机不兼容可能)
上一篇 2023年11月27日
太罕见!河南彩民中奖8662万,现场捐款
下一篇 2023年11月27日

相关推荐

  • このときもずっと在线(ことものの用作代词时)

    首先是词性方面この和その是连体词,可以直接连接体言(即名词代词等),これ和それ是代词,就是代替人、事务、场所的用语,不可以直接接体言接下来是词义以及意义:この和これ是近称,表示离说话人进的事务,この(此の)是这个、这事儿、这人,比如この服(这...

    2023年11月10日
  • 在线辞典(没字典怎么查字)

    1.在线字典:你可以在互联网上搜索该字,使用在线字典查找该字的意思和用法。许多在线字典还提供了例句和同义词,这可以帮助你更好地理解该字的含义和用法。...

    2023年11月14日
  • 慢慢地(用慢慢地仿写句子加动词)

    (10)懂事以后,慢慢地就有了一些莫名奇妙的心情,有许多茫然的日子,还有许多的无奈和悲哀,日积月累,经历五花八门,各种各样的事情多了,便渐渐地意识到那样的心情就是烦恼。...

    2023年11月20日
  • carl f.bucherer(有什么手表适合送给他们)

    男天秤——BREITLING(百年灵)B55Connected高强度炭化处理黑色钛金属表壳,橡胶表链。Cal.B55石英机芯,COSC认证。参考价请店洽。...

    2023年11月21日
  • 髡(为什么有人喜欢剃光头呢)

    有人喜欢剃光头,我觉得需要结合时代背景来看,譬如现代来说更多的是因为彰显个性,或者掉发,而古代来说更多是因为刑罚或者身份职业关系。我们先来说下现代人剃光头的原因。现代人剃光头...

    2023年11月21日
  • perth什么意思(大家有什么独特的感受)

    我答案是:绝不把英语当成一门工具去学,让当成你亲自去了解西方文化/国家的必须。你是先爱上他们的文化,才会想法设法去学。...

    2023年11月22日
  • aeroflot(204客机的性能如何)

    图-204一共有5个细分型号,其机身参数都一样,不同的是选装不同的发动机,例如204-100搭载AviadvigatelPS-90A型发动机,最高推力达157kN;204-120型:搭载劳斯莱斯RB211-535E4B型发动机,最高推力为19...

    2023年11月26日
  • 应对英文(四年级下册pep英语常用表达法带读)

    4.What'syourfavoritecolor/food/animal?(你最喜欢的颜色/食物/动物是什么?)...

    2023年11月26日
  • start from here(winexe是什么意思)

    扩展名为BAT的文件称为批处理文件。批处理文件是扩展名为·bat或·cmd的文本文件,包含一条或多条命令,由DOS或Windows系统内嵌的命令解释器来解释运行。批处理文件是无格式的文本文件。在命令提示下键入批处理文件的名称,或者双击该批处理...

    2023年12月04日
  • 6G专利申请量大比拼:美占比35.2%,日本占比9.9%,中国能排第几

    随着我国科技的不断发展,移动通讯技术也在不断升级,虽然我国目前还处于5G时代,可是对于6G技术的研究和发展已经开始引起了人们的关注,尤其像现在竞争激烈的领域,实际上每个国家都希望能成为6G技术的领军者。我们就来看一下有关6G专利申请量的数据对...

    2023年12月10日
返回顶部