首页 > 其他分享 >websocket-会话保持

websocket-会话保持

时间:2024-07-12 17:44:18浏览次数:16  
标签:协议 HTTP 通信 WebSocket 会话 保持 websocket 连接 客户端

Markdown Example

websocket-会话保持

什么是websocket

#数据以二进制传输的
WebSocket 是一种协议,用于在 Web 应用程序中创建实时、双向的通信通道。
WebSocket 协议本身并不提供安全性和加密功能
为了提供安全的 WebSocket 通信,可以在 WebSocket 连接上加入 TLS 或 DTLS(基于UDP的安全传输层协议) 协议
传统的 HTTP 请求通常是一次请求一次响应的,而 WebSocket 则可以建立一个持久连接,允许服务器即时向客户端推送数据,同时也可以接收客户端发送的数据
WebSocket 相比于传统的轮询或长轮询方式,能够显著减少网络流量和延迟,提高数据传输的效率和速度

WebSocket 可以在浏览器和服务器之间建立一条双向通信的通道,实现服务器主动向浏览器推送消息,而无需浏览器向服务器不断发送请求。
其原理是在浏览器和服务器之间建立一个“套接字”,通过“握手”的方式进行数据传输。
由于该协议需要浏览器和服务器都支持,因此需要在应用程序中对其进行判断和处理。

由来

WebSocket 是 HTML5 开始推出的基于 TCP 协议的双向通信协议,其优势在于与 HTTP 协议兼容、开销小、通信高效。
WebSocket 让客户端和服务器之间建立连接,并通过这个持久连接实时地进行双向数据传输。

其实 WebSocket 最主要的特点就是建立了一个可持久化的 TCP 连接,这个连接会一直保留,直到客户端或者服务器发起中断请求为止。
WebSocket 通过 HTTP/1.1 协议中的 Upgrade 头信息来告诉服务器,希望协议从 HTTP/1.1 升级到 WebSocket 协议。

WebSocket 建立在 HTTP 协议之上,所有的 WebSocket 请求都会通过普通的 HTTP 协议发送出去,然后在服务器端根据 HTTP 协议识别特定的头信息 Upgrade,服务端也会判断请求信息中 Upgrade 是否存在。 
这里面 HTTP 是必不可少的,不然 WebSocket 根本无法建立。
特别的,WebSocket 在握手时采用了 Sec-WebSocket-Key 加密处理,并采用 SHA-1 签名。

一旦建立了 WebSocket 连接,客户端和服务器端就可以互相发送二进制流或 Unicode 字符串。
所有的数据都是经过 mask 处理过的,mask 的值是由服务器端随机生成的。在数据进行发送之前,必须先进行 mask 处理,这样可以有效防止数据被第三方恶意篡改。

WebSocket 的通信协议是基于帧(数据包)的。
在数据发送时,一个完整的数据包可以分为多个帧进行发送,而每一个帧都包含了数据的一部分,同时还包含了帧头信息。

HTTP 与 Websocket的关系

两种协议都是用于网络通信的。
#HTTP 协议是“一问一答”,WebSocket 协议是“对话”。

1、HTTP (Hypertext Transfer Protocol) 是一个基于请求和响应模式的协议,最早用于 Web 应用。
2、WebSocket 是一种双向通信协议,可以在客户端和服务器之间建立持久的连接,以实现实时通信。

3、WebSocket 协议在建立连接时需要使用 HTTP 协议。 
具体来说,当客户端想要建立 WebSocket 连接时,它们需要通过 HTTP 请求发送一个握手请求。
如果服务器同意握手,它将发送一个握手响应,HTTP 协议随后会升级到 WebSocket 协议。

4、HTTP 和 WebSocket 协议在用途上也有所不同。
HTTP 协议主要用于客户端和服务器之间的请求和响应通信,而 WebSocket 协议主要用于实现实时通信和服务器推送。
通俗的说,HTTP 协议是“一问一答”,WebSocket 协议是“对话”。

5、总之,WebSocket 和 HTTP 是两种不同的协议,它们在通信模式、用途和建立连接时都有所不同,但是它们之间也有联系。

websocket与其它协议的区别

websocket与各种协议的区别:
参考:https://apifox.com/apiskills/websocket-socket-tcp-http/

#WebSocket 和 HTTP 的区别
1、连接方式不同: HTTP 是一种单向请求-响应协议,每次请求需要重新建立连接,而 WebSocket 是一种双向通信协议,使用长连接实现数据实时推送。
2、数据传输方式不同: HTTP 协议中的数据传输是文本格式的,而 WebSocket 可以传输文本和二进制数据。
3、通信类型不同: HTTP 主要用于客户端和服务器之间的请求和响应,如浏览器请求网页和服务器返回网页的 HTML 文件。WebSocket 可以实现双向通信,常常用于实时通信场景。
4、性能方面不同: 由于 HTTP 的每次请求都需要建立连接和断开连接,而 WebSocket 可以在一次连接上进行多次通信,WebSocket 在性能上比 HTTP 有优势。

#WebSocket 和 TCP 的区别:
- WebSocket 和 HTTP 都是基于 TCP 协议的应用层协议。
1、层次结构: WebSocket 是应用层协议,而 TCP 是传输层协议。
2、协议特点: TCP 是一种面向连接的协议,使用三次握手建立连接,提供可靠的数据传输。而 WebSocket 是一种无状态的协议,使用 HTTP 协议建立连接,可以进行双向通信,WebSocket 的数据传输比 TCP 更加轻量级。
3、数据格式: TCP 传输的数据需要自定义数据格式,而 WebSocket 可以支持多种数据格式,如 JSON、XML、二进制等。WebSocket 数据格式化可以更好的支持 Web 应用开发。
4、连接方式: TCP 连接的是物理地址和端口号,而 WebSocket 连接的是 URL 地址和端口号。


#WebSocket 和 Socket 的区别:
- Socket 是基于传输层 TCP 协议的,而 Websocket 是基于 HTTP 协议的。
- Socket 通信是通过 Socket 套接字来实现的,而 Websocket 通信是通过 HTTP 的握手过程实现的

持久化连接
传统的 Socket 通信是基于短连接的,通信完成后即断开连接。而 Websocket 将 HTTP 协议升级后,实现了长连接,即建立连接后可以持续通信,避免了客户端与服务端频繁连接和断开连接的过程。

双向通信
传统的 Socket 通信只支持单向通信,即客户端向服务端发送请求,服务端进行响应。而 Websocket 可以实现双向通信,即客户端和服务端都可以发起消息,实时通信效果更佳。

效率
Socket 通信具有高效性和实时性,因为传输数据时没有 HTTP 协议的头信息,而 Websocket 除了HTTP协议头之外,还需要发送额外的数据,因此通信效率相对较低。

应用场景
Socket 适用于实时传输数据,例如在线游戏、聊天室等需要快速交换数据的场景。而 Websocket 适用于需要长时间保持连接的场景,例如在线音视频、远程控制等。

标签:协议,HTTP,通信,WebSocket,会话,保持,websocket,连接,客户端
From: https://www.cnblogs.com/littlecc/p/18299069

相关文章

  • 基于预测与多样性保持机制的动态多目标进化算法研究(一) ——进化动态多目标优化算法框
    一、进化动态多目标优化算法框架(一)步骤进化动态多目标优化经过一段时间的发展,已经形成了相对成熟的动态多目进化算法的框架。一般地,动态多目标进化算法的步骤可以分为下面几步:第一步:随机初始化整个种群,设置算法运行需要的起始参数。第二步:环境检测:如果检测到环境发生了......
  • 【java】实现sse调用websocket接口,忽略wss证书并控制sse吐字速度
    maven<dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.5.3</version></dependency>AsyncConfigpackag......
  • 会话无界:Eureka中服务的分布式会话管理策略
    会话无界:Eureka中服务的分布式会话管理策略引言在微服务架构中,随着服务数量的增加,传统的会话管理方法面临着诸多挑战,如数据一致性、服务隔离和水平扩展等。Eureka作为Netflix开源的服务发现框架,虽然本身不直接提供会话管理功能,但可以与其他技术结合使用,实现服务的分布式会......
  • 解密本地会话存储:前段开发必备!sessionStorage和localStorage
    sessionStorage、localStorage:本地存储、本地会话window.sessionStorage、window.localStorage:方法一样注意:数据名称、数据具体值,必须加上引号,除非是变量,或者表达式,否则出错localStorage永久存储,关闭浏览器,本地存储都不会消失(只针对相同的浏览器)能多个相同的页面共享数据......
  • 20、Django-会话-cookie和session-2
    session是在服务器上开辟一段空间用于保留和服务器交互时的重要数据实现方式:--使用session需要在浏览器客户端启动cookie、且在cookie中存储session--每个客户端都可以在服务器端有一个独立的session--注意:不同的请求者之间不会共享这个数据、与请求者一一对应......
  • 19、Django-会话-cookie和session-1
    会话定义:--从打开浏览器访问一个网站开始到关闭浏览器为止、称之为一次会话--http协议是无状态的、导致会话状态难以保持cookie和session就是为了保持会话的技术cookies:--保存在客户端浏览器上的存储空间--查看cookie:--chrom:开发者工具-》Application-......
  • redis如何与mysql数据保持一致?
    redis如何与mysql数据保持一致?同步双写:cacheasidepattern,读:先读缓存再读数据库,一个缓存的过期时间,实现起来简单好用极限情况还会有数据不一致的风险。CAP定理:c一致性a可用性p分区容错性,cp或者是ap异步双写:基于消息队列实现,写:生产者:先更新数据库,向队列发消息,消费者:监听消......
  • go 使用websocket
    packagechatimport( "encoding/json" "github.com/gorilla/websocket" "github.com/zeromicro/go-zero/core/logx" "log" "net/http" "sync")typeClientstruct{ conn*websocket.Conn......
  • 10、flask-会话-session
    session会话是一种服务器端的会话技术、依赖于cookie特点:-服务端的会话技术-所有数据存储在服务器中-默认存储在内存中-存储结构也是key-value形式的键值对-session是离不开cookie的Flask中的session是全局对象常用操作:-设置seesion:-seesion['key']=val......
  • 9、flask-会话-cookie
    Cookie客户端的会话技术:-cookie本身由浏览器保存,通过response将cookie写道浏览器上、下一次访问时、浏览器会根据不同的规则携带cookie过来特点:-客户端的会话技术、浏览器的会话技术-数据全都是存储在客户端中-存储使用的键值对结构进行的存储-特性:-支持过期时......