【网络】WebSocket学习总结

是一种协议;
作用与Web应用程序和服务端之间;

实时的、双向的;

通过单一的TCP提供了持久化连接;

优势:

实时、双向、可以减少网络的负载;

劣势:

需要客户端和服务端双方都支持;

连续保持连接需要占用一些内存CPU资源;

安全问题:安全性显著弱于同等配置的HTTP/REST API(因长连接的特性放大攻击面),需要组合使用WSS+Origin校验+消息认证+内容过滤

基本概念:

基于TCP协议;

客户端发送一个WebSocket连接请求,之后服务端也反馈一个协议响应以确认要求。在这个握手期间,客户端和服务端会协商好使用的协议版本、支持的子协议、支持的扩展选项等等。握手完成后,连接会保持打开的状态。支持的文件数据格式包括了二进制数据和文本数据。

特点就是实时、双向、可靠、持久。

用于在线游戏、实时聊天。

生命周期:

连接建立:客户端发送一个请求,服务端响应一个握手,然后连接就建立了;

连接开放:连接建立并且开放,客户端和服务端之间可以相互发送数据;

连接关闭:可以是被服务端或者客户端发起的一个关闭帧来关闭连接;

连接关闭完成:WebSocket的连接完全关闭。

注意:WebSocket连接在任何时候都有可能关闭,如遇网络故障、服务端崩溃。

消息格式:

文本或二进制数据;

消息构成是消息头+消息体。

性能:

双向通信性能更好:使用单一的TCP连接;

更小的网络流量:与HTTP相比,WebSocket的协议需要更少的网络流量维护连接,因为它不需要再每个请求/响应交换中发送头部信息;

更低的延迟:WebSocket协议允许服务器主动向客户端推送消息,而不需要客户端先发送消息;

更好的服务端资源管理:WebSocket可以保持持续活动的连接状态,服务端可以更好地管理客户端的连接,减少服务端的开销和处理时间。

如何优化WebSocket的性能:

减少消息的大小:WebSocket传输的数据大小对性能有很大的影响,尽可能使用二进制传输协议来代替文本传输,或者用压缩算法对消息进行压缩;

使用CDN(内容分发网络)加速:可以将静态资源缓存到离用户更近的节点上,提高传输速度和性能,CDN可以缓存WebSocket的初始握手,避免不必要的网络延迟;

使用负载均衡:通过使用负载均衡实现分配并平衡多个服务器的负载,避免单个服务器过载,同时也提高了服务的伸缩性;

优化服务端代码:WebSocket服务端代码的性能时关键因素,使用高效的框架和算法可以减少资源占用而提升速度;

避免网络阻塞:WebSocket会受到网络阻塞的影响,当有太多的数据连接同时请求时,服务器性能会下降,使用更合适的线程池和异步IO操作可以避免线程阻塞,提高WebSocket的并发性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值