实时弹幕的数据交互采用的基本都是 websocket 协议

# 1. 什么是 WebSocket?

# 1.websocket 的基本概念

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,旨在解决传统 HTTP 通信模式中的一些局限性,特别是在需要实时数据交换的应用场景下。

全双工通信:WebSocket 允许客户端和服务器之间的双向通信,即客户端可以随时向服务器发送消息,服务器也可以随时向客户端发送消息,这与 HTTP 的单向请求 - 响应模式不同。

单个 TCP 连接:WebSocket 在建立连接时会使用 HTTP 协议进行一次握手,然后切换到 WebSocket 协议。这意味着在握手完成后,客户端和服务器之间的通信通过同一个 TCP 连接持续进行,不需要频繁的连接和断开。

# 2. WebSocket 的工作原理

  1. 握手阶段:客户端发送一个 HTTP 请求,要求升级协议到 WebSocket。如果服务器支持 WebSocket,它会返回一个响应,确认升级协议。这一阶段完成后,连接升级为 WebSocket 协议。
  2. 数据传输阶段:握手成功后,客户端和服务器之间可以通过这个连接发送和接收消息。消息是通过帧(frame)传输的,每个帧可以包含文本、二进制数据等。
  3. 关闭连接:任何一方都可以随时关闭连接,通知另一方连接将关闭。

# 3. WebSocket 的应用场景

  • 实时聊天应用:如即时通讯工具,WebSocket 可以实现即时消息的收发。
  • 实时游戏:如多人在线游戏,需要频繁的数据交换和低延迟通信。
  • 股票行情推送:实时推送最新的股票价格变动。
  • 在线协作工具:如 Google Docs 的实时协作编辑功能。

# 4. 优点

低延迟,效率高,实时性强

# 5. 方法

websocket 有四个事件和两个方法,两个方法是 send 和 close,四个事件分别是 open, message, error, close,其中,最关键的是 open 和 message。

open 事件就是初始化事件,当 websocket 连接刚刚建立后,将会进入到 open 事件中,在 open 事件中完成一些初始化的操作

由于 websocket 是实时通信,因此会涉及到客户端和服务器之间的双向通信,也就是客户端向服务器发数据,服务器也可以向客户端发数据。

其中,客户端向服务器发数据是通过 websocket 的 send 方法实现的,服务器向客户端发数据,其实就是响应信息,当服务器响应数据时,会触发 message 事件,然后我们就可以在 message 事件中,处理服务器响应的数据。

具体可参考文档:https://developer.mozilla.org/zh-CN/docs/Web/API/WebSocket

# 2. playwright

playwright 库是一个用于自动化浏览器操作的库。

下面是一个简单的例子。

from playwright.sync_api import sync_playwright
def run(playwright):
    # 启动 Chromium 浏览器
    browser = playwright.chromium.launch(headless=False)
    # 创建一个新的浏览器页面
    page = browser.new_page()
    # 导航到一个网页
    page.goto('https://example.com')
    # 截图保存页面
    page.screenshot(path='example.png')
    # 关闭浏览器
    browser.close()
# 使用 Playwright 运行自动化脚本
with sync_playwright() as playwright:
    run(playwright)

# 3. 数据处理

最难的一步,一直懵懵懂懂的,搞不来,慢慢学习吧

protobuf 协议

更新于 阅读次数