Web Socket 简介
介绍
作为后端开发人员,你有时会厌倦制作基本的 CRUD 应用程序,它们本质上都一样,只是业务逻辑不同而已。
你想做更有趣的事情。
一个月前,我突然有了顿悟。从那时起,我开始研究各种各样的新课题。其中一个我想研究的课题就是WebSocket,我之前一直听到这个词,但从未真正理解过它。所以我决定自己动手试试,结果发现它比我想象的要容易得多。今天我想把我这两天自学的内容分享给大家。
你将学到:
- 什么是Web套接字?
- WebSocket 的工作原理是什么?
- WebSocket解决了哪些问题?
- WebSocket 的优点和缺点
- WebSocket 的替代方案
HTTP
每项技术的诞生都是为了解决某些问题,WebSocket 解决的是 HTTP 协议的局限性。但在深入探讨其问题之前,让我们先快速了解一下 HTTP。
- HTTP(超文本传输协议)是一种用于传输超媒体文档(例如 HTML(超文本标记语言))的协议。
- 它基于 TCP(传输控制协议)构建。
那么HTTP是如何工作的呢?
很简单,只有两个实体:客户端和服务器。用Web开发术语来说,客户端就是前端,服务器就是后端。
流程如下:
- 客户端打开一个 TCP 连接。
- 然后客户端向服务器发送请求(GET、POST 等),并等待响应。
- 服务器接收并处理请求,然后将相应的数据返回给客户端。
- 客户端收到响应后,关闭 TCP 连接。
简而言之,HTTP 的工作原理是这样的:它还有其他变体,例如 HTTP 1.1、HTTP 2 和 HTTP 3。它们的工作方式有所不同,但本质上都是请求-响应模式。您可以自行查阅相关资料。
这种请求-响应方式效果很好。它至今(2021年)仍在使用,将来也会继续使用,但它也存在一些缺陷。
HTTP 问题
随着时间的推移,网站变得越来越复杂。Facebook 最初只是一个简单的社交媒体网站,但现在它不仅仅是一个网站,而是一个完整的平台。世界联系日益紧密,即时通讯应用开始主导市场。
人们希望能够实时互发短信。
可惜的是,HTTP协议并非为此而设计的。
您可能还记得,HTTP 架构是请求-响应模式,客户端必须发起连接,并在收到数据后关闭连接。但如果我们希望服务器向客户端发送更新后的数据呢?例如,当有人向群聊发送消息时,所有其他成员都必须收到通知。用户可以简单地刷新页面来获取更新后的数据,但这会给用户带来糟糕的体验。
聪明的计算机科学家们意识到了这一点,并得出结论:我们需要创建一个新的协议。
Web 套接字
这时,Web 套接字就派上了用场。Web 套接字是一种协议,它允许服务器和客户端通过单个 TCP 连接进行双向通信。
好吧,这听起来可能很复杂,但别担心,其实并不复杂。
让我们一起来了解一下WebSocket的工作原理。
- 客户端向服务器发送请求,请求更改协议。
- 服务器收到请求后,如果它支持 Web 套接字,则会将其协议更改为 Web 套接字协议。
- WebSocket 连接已打开,客户端和服务器可以持续通信。
步骤 1 和 2 被称为 WebSocket 握手。
现在有了 WebSocket,服务器可以在每次更新时将新消息发送回客户端。
Web Socket 应用案例
- 消息传递
- 社交动态
- 多人游戏
- 协作编辑/编码
- 点击流数据
- 金融股票代码
- 体育新闻
- 多媒体聊天
- 基于位置的应用
- 在线教育
Web Socket 的优缺点
技术并非完美无缺,任何事物都有其优缺点。WebSocket 的主要优势在于:
- 这是双向沟通。
- 这是HTTP兼容性问题。
- 因为它与 HTTP 兼容,所以也容易被防火墙规避。
缺点是:
- 代理操作很棘手。
- 负载均衡是一项挑战。
- 有状态的——这意味着很难进行水平扩展。
Web Sockets 的替代方案
WebSocket 有多种替代方案,但每种方案都有其更适合的用例。
- WebHooks
- HTTP 流媒体
- Web传输(虽然还很新,但绝对值得关注)
结论
我鼓励大家尝试一下这项技术,它并不难实现,尤其是在 JavaScript 中。你可以创建一个简单的聊天应用。总之,希望你今天有所收获,和往常一样,如果你有任何问题,欢迎在评论区留言。
其他参考文献
- https://www.youtube.com/watch?v=2Nt-ZrNP22A
- https://www.youtube.com/watch?v=PjiXkJ6P9pQ
- https://www.youtube.com/watch?v=6RvlKYgRFYQ

