Websocket 是一种网络通信协议,它允许在单个 TCP 连接上进行全双工通信。与传统的 HTTP 请求相比,Websocket 可以提供更快的通信速度和更高的实时性。

什么是 Websocket?

Websocket 是一种在单个 TCP 连接上进行全双工通信的协议。它允许服务器和客户端之间实时地发送和接收消息,而不需要像 HTTP 那样每次通信都需要建立一个请求-响应的流程。

为什么使用 Websocket?

  1. 实时通信:Websocket 可以实现服务器和客户端之间的实时通信,适用于需要快速响应的场景,如在线聊天、游戏等。
  2. 节省带宽:由于 Websocket 是全双工通信,客户端和服务器可以在任何时候发送消息,无需像 HTTP 那样频繁建立连接,从而节省带宽。
  3. 简化开发:Websocket 提供了更简单、更直接的 API,使得开发实时通信应用更加方便。

Websocket 的工作原理

  1. 握手:当客户端发起 Websocket 连接时,它会发送一个特殊的 HTTP 请求,服务器收到请求后,会返回一个特殊的 HTTP 响应,完成握手过程。
  2. 数据传输:握手成功后,客户端和服务器就可以通过 TCP 连接进行数据传输。

示例:使用 WebSocket 进行实时聊天

下面是一个简单的实时聊天示例:

  • 客户端
var socket = new WebSocket("ws://<本站链接>/chat");

socket.onmessage = function(event) {
  console.log("收到消息:" + event.data);
};

socket.onopen = function(event) {
  console.log("连接成功!");
  socket.send("你好,服务器!");
};
  • 服务器
from flask import Flask, request
from flask_sockets import Sockets

app = Flask(__name__)
sockets = Sockets(app)

@sockets.route('/chat')
def echo_socket(ws):
    while not ws.closed:
        message = ws.receive()
        ws.send(message)

if __name__ == "__main__":
    app.run()

在这个示例中,客户端使用 JavaScript 连接到服务器,并发送消息。服务器接收到消息后,将其发送回客户端。

学习资源

希望这个教程能帮助你更好地了解 Websocket!😊