Web Socket 简介

2025-06-04

Web Socket 简介

大家好,我当时正在考虑使用 Django 为正在进行的项目添加 Web 套接字支持,然后我遇到了django channels,这是一个可以支持 Web 套接字协议的项目。

但是在向你们展示如何使用 Django Channels 创建超越标准 HTTP 协议的实时应用程序之前,我想先对 Web 套接字进行概念介绍,并对WebSocketAPI 进行解释。

继续...


在实时应用中,客户端和服务器之间会持续交换信息。HTTP 协议无法满足这些应用的需求,因为初始请求完成后,服务器与客户端之间的通信就会关闭,为了获取更新,客户端必须重新建立连接。这时,Web Socket 就派上用场了。

日益增长的实时应用需求可以通过 Web Socket 来实现。Web Socket 是一种双通道全双工双向协议,能够在客户端和服务器之间维持持久的开放连接。别担心,我知道它比较长,所以让我们来分解一下。

  • 双通道全双工双向通信只是意味着客户端和服务器可以实时对话而不必不断发出请求,并且与 HTTP 相反,其中请求始终由客户端发起,并且响应由服务器处理,使用 Web 套接字,通信可以双向进行,即从服务器到客户端或从客户端到服务器。

WebSocket的主要特点:

这是一次 HTTP 升级。在 Web 套接字连接中会发生以下情况:

  • 首先是我们所说的客户端握手请求,这意味着客户端向服务器发送带有标头的标准 HTTP 请求,以从 HTTP 升级到 Web 套接字。
  • 第二个是Web Socket 握手。服务器使用最初由 HTTP 建立的 TCP 连接来监听传入的套接字连接。握手是从 HTTP 到 Web Socket 的桥梁。
  • 第三步是服务器握手响应。现在,如果所有条件都满足,服务器同意升级,并返回一个响应,表明协议将更改为 Web 套接字。服务器还会在 Web 套接字连接的整个生命周期内维护最初建立的 TCP 连接。
  • 请注意,标头仅发送一次,即在升级请求期间。

因此,利用 Web 套接字的概念,我们可以构建需要持续更新和快速响应的项目​​。例如,考虑一个允许多个用户实时聊天的聊天应用程序。

  • 如果使用 Web Sockets,用户可以实时交换消息。例如,有人向群聊发送消息,服务器收到该消息后,会将其发送给同一连接中的所有人。

WebSocket 客户端应用程序

WebSocket 客户端应用程序使用WebSocketAPI 通过 WebSocket 协议与 WebSocket 服务器进行通信。

  • WebSocketAPI使得客户端和服务器之间的双向交互通信成为可能。

要打开 Web 套接字连接,我们首先需要创建一个WebSocketAPI 对象,然后使用该对象在已建立的连接上发送和接收数据。

const socket = new WebSocket(url);
Enter fullscreen mode Exit fullscreen mode

好的,创建套接字实例后,我们可以使用不同的事件监听器来执行某些任务。

WebSocket 事件处理程序

socket.open()- 建立连接时调用。
socket.onmessage()- 从服务器接收到消息时调用。
socket.onclose()- 关闭连接时调用。
socket.error()- 发生错误时调用。

WebSocket 方法

socket.send()- 使用已建立的连接将数据发送到服务器。我们可以将数据格式化为 JSON 格式发送到服务器。-
socket.close()终止连接。


WebSocket 服务器应用程序

WebSocket 服务器是一个监听遵循特定协议的 TCP 服务器任意端口的应用程序。正如我在本教程开头提到的,我们可以利用 Django Channels 构建支持 Web Socket 的实时应用程序。

在即将推出的教程中,我们将详细介绍所有这些是如何协同工作的,敬请关注。

文章来源:https://dev.to/earthcomfy/introduction-to-web-sockets-3n7m
PREV
关于如何改善开发人员日常工作的 8 个技巧。
NEXT
Django 重置密码