# online_play **Repository Path**: no_homework/online_play ## Basic Information - **Project Name**: online_play - **Description**: 聊天软件依赖仓库 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-11-02 - **Last Updated**: 2026-11-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Gitee 房间聊天 用 Gitee 仓库当作消息后端:**每条消息 = 一次 Gitee 提交**,客户端轮询房间文件即可同步。 ## 目录结构 ``` rooms/<6位房间号>.json 每个房间一个文件 { "room", "host", "host_key", "status": open|closed, "created", "messages": [...] } ``` - 创建房间:以随机 6 位数字为文件名,写入 `status: open` 的房间文件(GET 返回 404 视为未占用)。 - 发消息:GET 房间文件(拿到 sha)→ 追加消息 → 带 sha 的 PUT 提交,即一次 commit。 - 冲突:PUT 返回 sha 不匹配时自动重读重试(最多 8 次)。 - 同步:客户端每 2 秒轮询一次,进入房间时只显示最近 10 条,之后只增量显示新消息。 - 解散:房主把 `status` 改为 `closed`,所有客户端轮询到后显示“聊天结束”并停止;聊天记录保留在历史提交中。 - 房主校验:建房时生成 `host_key`,只有本地保存了该 key 的客户端才显示“解散房间”按钮。 ## 配置 `client.py` 顶部: ```python TOKEN = "..." # Gitee 令牌 OWNER = "no_homework" # 仓库所有者 REPO = "online_play" # 仓库名 BRANCH = "master" ``` ## 构建 ``` pip install requests pyinstaller python -m PyInstaller --onefile --noconsole --name chat_client client.py ``` 产物:`dist/chat_client.exe`,双击即可运行。 ## 已知限制 - 所有客户端共用同一个令牌,**必须使用公开仓库**,令牌会随 exe 泄露(可被反编译),建议定期更换令牌。 - Gitee 对仓库写入有频率限制,高频聊天可能触发限制或提交失败。 - 仓库可能被他人清空(Gitee 会保留近期提交历史,但 `contents` API 看不到删除后的文件)。 - 打开仓库的人能通过提交历史看到全部聊天记录,请勿发送敏感信息。