第 7 章 HTTP/2 和 HTTP/3 的语法:重新定义协议(2)
[日] 涩川喜规
7.4 用于 JavaScript 的新的通信 API
Web 服务已经成为社会的基础设施,使用了 Ajax 等技术的动态交互式网站被广泛使用。为了让不断扩展的规范完美适配整个 Web 生态系统,重新设计了 XMLHttpRequest 的 Fetch API 应运而生。另外,仅通过客户端的简单的 HTTP 请求难以高效进行实现的情况也在不断增加。为了解决该问题,出现了 Server-Sent Events、WebSocket 和 WebRTC(Web Real-Time Communication,网页即时通信)。
Fetch API
重新设计了客户端发出的 HTTP 请求。
Server-Sent Events
用于实现服务器到客户端的通信。
WebSocket
用于实现高效的双向通信(会修正错误)。
WebRTC
基于 UDP 实现 P2P 通信(也可以是经由服务器的通信)中的视频、声音和数据的通信。
7.4.1 FetchAPI
与 XMLHttpRequest 一样,Fetch API 也是执行服务器访问的函数。Fetch API 用于 JavaScript,其特征如下所示。
与 XMLHttpRequest 相比,易于控制对源服务器之外的访问等 CORS 处理
遵循 JavaScript 的现代异步处理的写法——Promise
能够控制缓存
能够控制重定向
能够设置 Referer 策略
能够从 Service Worker 内部使用
虽然有人说 Fetch API 是底层 API,而且 W3C 的规范中也将其描述为底层 API,但这并不代表它能在套接字层进行处理。利用 Fetch API 控制缓存等也不是不可能,但存在各种安全方面的限制,比如有些首部在收发数据时存在限制、必须严格遵守同源策略等,导致 Fetch API 依然是限定于 HTTP 请求的沙箱。Fetch API 无法用于从浏览器通过 ssh 连接外部服务器、发送 git 协议、开发 Web 服务器等。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
![](https://static001.geekbang.org/resource/image/d0/e4/d0880927e2a522a038be2d04bf19dfe4.png)
本文深入探讨了现代Web通信技术的重要方面,包括HTTP/2和HTTP/3协议的语法重新定义以及与之相关的新技术。Fetch API的现代异步处理方式和更多控制缓存、重定向等功能,使其成为XMLHttpRequest的替代品。此外,文章还介绍了Server-Sent Events、WebSocket和WebRTC等技术在服务器到客户端通信、双向通信和P2P通信中的应用。WebRTC的使用场景包括视频通话系统、实况转播、多人在线游戏和IP电话终端等领域。同时,文章还介绍了WebRTC的技术元素,包括RTCPeerConnection、SDP和ICE等。另外,HTTP Web推送作为一种新的通知功能结构,也在本文中得到了介绍。总的来说,本文内容丰富,对于了解和应用现代Web通信技术具有重要参考价值。文章还介绍了HTTP/2和HTTP/3协议的特点,以及对Web通信效率提升的影响。HTTP/2提高了并行处理的数量,对首部进行压缩以缩减大小,并添加了设置优先顺序的功能。而HTTP/3进一步缩短了连接时间,实现了高速化,并面向移动终端进行了优化。文章还展望了Web未来的发展,包括WebPackaing、Signed Exchange以及使HTTP/3后台的QUIC通用化以用于WebRTC后台的WebTransport等。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《详解 HTTP:协议基础与 Go 语言实现》
《详解 HTTP:协议基础与 Go 语言实现》
立即购买
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论