WebSocket 详解:实时双向通信是如何实现的?

WebSocket 详解:实时双向通信是如何实现的? 前面几篇分别介绍了 TCP/IP、Socket、HTTP 和 HTTPS。 到这里,一个问题自然出现了: HTTP 已经可以完成客户端和服务器之间的通信,为什么还需要 WebSocket? 因为传统 HTTP 的基本模型是: Client │ │ Request ▼ Server │ │ Response ▼ Client 如果服务器想主动通知客户端,就比较麻烦。 例如: 用户收到新消息 订单状态发生变化 股票价格发生变化 游戏状态发生变化 服务器有数据更新,但客户端没有主动发请求。 传统方案只能不断: Client → Server:有新消息吗? Server → Client:没有 Client → Server:有新消息吗? Server → Client:没有 Client → Server:有新消息吗? Server → Client:有 这就是轮询。 WebSocket 的目标就是解决这类问题: Client ⇄ Server 建立连接之后,双方都可以主动发送数据。 RFC 6455 将 WebSocket 定义为一种基于 TCP 的双向通信协议,协议由连接建立握手和数据帧传输两部分组成。 1. WebSocket 到底是什么? WebSocket 是一个应用层通信协议。 它建立在 TCP 之上:...

2023年09月16日 · 7 min · Leanku

Socket 详解:应用程序如何进行网络通信

Socket 详解:应用程序如何进行网络通信 上一篇《TCP/IP 详解:理解互联网通信的基础》文章介绍了 TCP/IP。 我们知道: 应用层 ↓ TCP / UDP ↓ IP ↓ 网络 TCP/IP 负责完成网络通信,但应用程序并不会直接操作 TCP 报文或者 IP 数据包。 应用程序通常通过操作系统提供的 Socket API 来使用网络能力。 因此,如果 TCP/IP 是网络通信的基础,那么 Socket 就是: 应用程序进入网络世界的接口。 对于后端开发来说,理解 Socket 非常重要。 HTTP Server、MySQL、Redis、RPC、WebSocket,以及各种 TCP 长连接服务,底层都离不开 Socket。 1. Socket 到底是什么? Socket 通常翻译为“套接字”。 它不是一个网络协议,而是一种网络通信接口和抽象。 应用程序可以通过 Socket: 创建通信端点 绑定地址 建立连接 发送数据 接收数据 关闭连接 例如 TCP 服务端的典型流程: socket() ↓ bind() ↓ listen() ↓ accept() ↓ read() / write() ↓ close() 客户端则通常是:...

2023年07月18日 · 6 min · Leanku