1.8 KiB
1.8 KiB
Cloudflare 在线聊天室(D1 + KV + R2)
按 readme.txt 需求实现的最小可用在线聊天室:D1 存用户/房间/消息,KV 做会话与房间访问令牌缓存,R2 存图片。
功能概览
- 房间模式:开放/私密
- 当前版本只有一个房间:大厅(可选设置密码)
- 开放:所有人可浏览;必须注册登录才能发言
- 私密:需要密码进入;可选“允许游客匿名发言”
- 用户等级:匿名游客 / 注册会员 / 认证会员 / 管理员
- 注册会员:可发文字/表情;不可上传图片
- 认证会员:可上传图片(R2)
- 管理员:可编辑用户资料与等级、封禁用户、删除消息
- 页面:注册、登录、找回密码、房间列表、聊天窗口(左右气泡)
- 实时:SSE(EventSource)推送(简化实现,适合 MVP)
本地开发
- 安装依赖
npm i
- 创建并迁移 D1
npx wrangler d1 create chat_db
# 把输出的 database_id 填到 wrangler.toml
npx wrangler d1 execute chat_db --file=./schema.sql
- 创建 KV / R2,并填入
wrangler.toml
npx wrangler kv namespace create CACHE
npx wrangler r2 bucket create chat-bucket
- 启动
npm run dev
部署
npm run deploy
管理员
生产/开发环境:第一个注册成功的用户会自动提升为管理员(后续用户为注册会员)。
开发环境也可用接口创建管理员(wrangler.toml 的 DEV_MODE = "true"):
curl -X POST http://localhost:8787/api/admin/debug/create-admin ^
-H "content-type: application/json" ^
-d "{\"username\":\"admin\",\"password\":\"admin123\"}"
管理员可在页面右侧“管理 → 大厅密码”设置/取消大厅密码:设置后游客登录会要求输入该密码;取消后游客登录直接进入。