# PrivyDrop - 后端

这是 PrivyDrop 的后端服务器。它使用 Node.js、Express 和 Socket.IO 构建，负责处理 WebRTC 连接的信令、房间管理和来自前端的 API 请求。

## ✨ 功能特性

- **WebRTC 信令:** 使用 Socket.IO 交换 SDP 和 ICE candidates。
- **房间管理:** 使用 Redis 高效地创建和管理临时文件共享房间。
- **轻量级 API:** 提供核心的 HTTP 接口供前端交互。
- **临时数据存储:** 所有房间数据在 Redis 中都有自动过期时间。

## 🛠️ 技术栈

- **运行时**: Node.js
- **框架**: Express.js
- **语言**: TypeScript
- **实时通信**: Socket.IO
- **数据库**: Redis (使用 ioredis 客户端)
- **进程管理**: PM2

## 🚀 入门 (本地开发)

1.  **先决条件**

    - Node.js (v18.x 或更高版本)
    - 一个正在运行的 Redis 实例

2.  **进入目录并安装依赖**

    ```bash
    cd backend
    npm install
    ```

3.  **配置环境变量**
    首先，从模板文件复制一份开发环境变量配置：
    ```bash
    cp .env_development_example .env.development
    ```
    然后，打开并编辑 `.env.development` 文件，根据你的本地 Redis 和前端配置进行调整。

4.  **运行开发服务器**
    ```bash
    npm run dev
    ```
    服务器将在 `BACKEND_PORT` 环境变量指定的端口上启动（默认为 3001）。

## 📖 API 与事件摘要

本服务提供了一系列 API 端点和 Socket.IO 事件来支持前端功能。

- **API 端点**: 主要包括房间创建 (`/api/get_room`)、加入和检查等。
- **Socket.IO 事件**: 负责处理客户端加入房间 (`join`) 以及 WebRTC 信令的转发 (`offer`, `answer`, `ice-candidate`)。

## 📚 详细文档

- 要深入理解后端的代码结构、模块设计和 Redis 数据模型，请阅读 [**后端架构详解**](../docs/BACKEND_ARCHITECTURE.zh-CN.md)。
- 要了解项目前后端的整体协作方式，请参阅 [**项目整体架构**](../docs/ARCHITECTURE.zh-CN.md)。
- 有关生产环境的部署方法，请参考 [**部署指南**](../docs/DEPLOYMENT.zh-CN.md)。
