关注【索引目录】服务号,更多精彩内容等你来探索!
如果您正在学习 Web 的工作原理(尤其是作为一名 Go 开发者),您可能已经使用过 REST API 并通过 JSON 交换数据。但是,一旦您尝试使用实时功能(例如实时聊天、股票行情或多人游戏),您就会听到一种叫做WebSockets的东西。
那么,什么是 WebSocket?它们能取代 HTTP 和 JSON 吗?什么时候应该使用它们?
让我们以最简单的方式来分解它。
HTTP:古老的可靠协议
HTTP(超文本传输协议)是浏览器与服务器之间最常用的通信方式。
-
客户端(如您的浏览器)发送请求。 -
服务器发送响应。 -
每次交互后连接都会关闭。
这对于以下操作来说非常完美:
-
正在加载网页 -
提交表单 -
从 API 获取 JSON 数据
但是如果你需要实时更新怎么办?比如在有人发送新消息时立即收到?
这就是 HTTP 的不足之处。
进入 WebSocket:持久、实时连接
WebSockets 允许浏览器和服务器建立持久连接。
-
连接保持打开状态。 -
双方可以随时发送消息。 -
无需反复询问服务员“有什么新菜吗?”
这称为全双工通信:客户端和服务器可以持续相互通信。
适合:
-
实时聊天 -
通知 -
实时仪表板 -
多人游戏
WebSocket 与 HTTP(使用 JSON)
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
所以是的,在某些情况下, WebSockets 可以替代 HTTP 上的 JSON——但它们解决的是不同的问题。
-
JSON 是一种数据格式。 -
WebSocket 是一种通信协议。 -
您仍然可以通过 WebSockets使用 JSON 。
真实示例:聊天应用程序
使用 HTTP + JSON:
-
你每隔几秒钟就会发送请求:“有新消息吗?” -
服务器响应:“没有。仍然没有响应。”(浪费带宽)
使用 WebSocket:
-
您连接一次。 -
一旦有人发送消息,服务器就会向您推送消息。 -
高效、即时。
您应该始终使用 WebSocket 吗?
不一定。以下是快速指南:
✅ 在以下情况下使用 WebSocket:
-
您需要实时更新 -
服务器必须将数据推送到客户端 -
您正在开发聊天应用、实时游戏或通知
✅ 在以下情况下使用 HTTP(带有 JSON):
-
您正在构建标准 CRUD API -
数据不经常变化 -
SEO 或缓存很重要
结论
WebSocket 不会完全取代 HTTP,但它能提供更多可能性。对于 Go 开发者(以及前端开发者)来说,学习 WebSocket 开启了构建实时现代 Web 应用程序的大门。
在下一篇文章中,我们将用 Go 语言构建一个简单的 WebSocket 服务器,并使用 JavaScript 将其连接到浏览器。你将看到它是多么简单(且强大)。
关注【索引目录】服务号,更多精彩内容等你来探索!

