websocket

WebSocket是一种网络协议,它提供了一种实时的双向通信机制,使得浏览器和服务器之间可以进行快速的数据交换。传统的HTTP协议在客户端请求完成后会立即关闭连接,而WebSocket协议支持长连接,可以保持连接状态,实时地进行数据传输。

WebSocket协议的好处包括:实时性更好、网络数据传输更快捷、更小的数据包、更少的连接数和更好的数据安全性。它已经成为现代web应用程序中非常重要的一部分,被广泛应用于在线聊天、游戏、实时协作和视频流媒体等场景。

1.http协议

概念: HTTP协议是一种无状态无连接,单向的应用层协议,它采用的是请求/响应模型。通信请求只能由客户端发起,服务端对请求做出应答处理,一个http请求对应着一个响应。

缺点: 因为它的特性是一个响应对应着一个请求,所以,服务器不能主动发送消息给客户端(浏览器)这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。大多数web应用程序通过频繁的异步AJAX请求实现长轮询。轮询的效率低,非常浪费资源(因为必须不停连接,或者HTTP连接始终打开)。

无状态:

无状态是指协议对事物处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送HTTP请求之后,服务器根据请求 会给我们发送数据过来,但是发送完,不会记录任何信息。

优点:解放了服务器,每一次请求"点到为止"不会造成不必要连接的占用

**缺点:**每次请求会传输大量重复的内容信息。

无连接:

它的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

长连接和短连接

长连接

优点:可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户端适合使用长连接。

缺点:client端一般不会主动关闭连接,当client与server之间的连接一直不关闭,随着客户端连接越来越多,server会保持过多连接。server端需要采取一些策略来控制

使用场景:长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。

短连接

优点:对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。

缺点:客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。需要频繁的建立连接

使用场景:WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接

2.WebSocket介绍

WebSocket 协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持了。**WebSocket 是一种网络通信协议, 由HTML5提出的一种在单个 TCP 连接上进行全双工通讯的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,**具有持久化,一般应用在:聊天室,股票基金报价,协同办公等等...其他特点包括:

  • 建立在 TCP 协议之上,服务器端的实现比较容易。

  • 与 HTTP 协议有着良好的兼容性。默认端口也是 80 和 443 ,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。

  • 数据格式比较轻量,性能开销小,通信高效。

  • 可以发送文本,也可以发送二进制数据。

  • 没有同源限制,客户端可以与任意服务器通信。

  • 协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。

Http和WebSocket的区别

相同点
  • 都是一样基于TCP的,都是可靠性传输协议。

  • 都是应用层协议。

不同点
  • 模拟WebSocket协议,可以双向发送或接受信息。HTTP是单向的。

  • WebSocket是需要握手进行建立连接的。

  • WebSocket是有状态,Http是无状态的

联系

WebSocket在建立握手时,数据是通过HTTP传输的。但是建立之后,在真正传输时候是不需要HTTP协议的。

相关推荐
江喜原3 分钟前
微服务下设计一个注解标识是否需要登录
java·微服务·架构·登录
ABin-阿斌10 分钟前
SpringBoot 整合 Easy_Trans 实现翻译的具体介绍
java·spring boot·后端
菜鸟求带飞_12 分钟前
算法打卡:第十一章 图论part03
java·数据结构·算法·深度优先·图论
圆头圆脑圆JAVA12 分钟前
简单了解微服务--黑马(在更)
java·spring boot·微服务
木子欢儿20 分钟前
在 Debian 12 上安装 Java 21
java·运维·开发语言·debian
一二小选手23 分钟前
【高级编程】XML DOM4J解析XML文件(含案例)
xml·java
终末圆24 分钟前
MyBatis XML映射文件编写【后端 18】
xml·java·开发语言·后端·算法·spring·mybatis
就这个java爽!24 分钟前
超详细的XML介绍【附带dom4j操作XML】
xml·java·开发语言·数据库·青少年编程·eclipse
kunkun10126 分钟前
Mybatis的XML实现方法
xml·java·mybatis
libai33 分钟前
STM32 USB HOST CDC 驱动CH340
java·前端·stm32