一个轻量的实时协作空间:创建一个房间,把房间码发给同伴,所有人即可在同一个文本框里实时编辑、即时互见。
共享文本房间(ChatRoom)是一个无需注册账号的协作工具。每个房间由一段 4–32 位的「数字 + 小写字母」房间码唯一标识,房间内只有一份共享文本——任何进入房间的人都能直接编辑,一方输入,其他人页面会在亚秒级自动刷新看到。
基于 WebSocket + Durable Objects,改动即时广播给房间内所有人。
不需要注册登录,凭房间码即可进入,公开房间直接可进。
设为私有后需口令进入,不出现在大厅,适合内部讨论。
房主可维护一段公告,房间内所有人只读可见。
在大厅首页点击「创建房间」,填写以下信息后提交:
| 字段 | 说明 | 规则 |
|---|---|---|
| 房间码 | 房间的唯一地址,也是进入凭证(公开房间) | ^[a-z0-9]{4,32}$,若已存在会提示「房间已存在,可直接进入」 |
| 是否公开 | 公开房间出现在大厅列表;私有房间需口令 | 开关,默认公开 |
| 房间口令 | 仅私有房间需要,进入时校验 | 设私有时必填,建议 4–64 位 |
| 公告(可选) | 房主维护的只读提示 | ≤ 2 KB |
owner_token(房主令牌):自动存进本机浏览器 localStorage,凭它显示房主控制区。recovery_key(恢复码):仅此一次弹出,用于日后找回房主身份——请立即复制备份。recovery_key 明文只在创建成功的弹窗里出现一次。关闭弹窗后无法再次查看,请务必提前复制保存(如记在密码管理器)。大厅(首页)列出所有公开房间,每个列表项展示:房间码、公告摘要、最近更新时间。你可以:
进入房间后,中部就是共享文本编辑区。你可以像用记事本一样直接输入,所有改动会:
PUT /content 保存。创建时把开关设为「私有」并填写口令,房间即变为私有:
POST /enter)。localStorage["pass:"+code],后续读取/编辑自动携带;若校验失败(如换设备)会重新弹窗。当本机 localStorage 中存在该房间的 owner_token 时,房间页会显示房主控制区。你可:
| 操作 | 说明 |
|---|---|
| 切换公开 / 私有 | 开关即可。把公开房间转为私有时,会强制弹窗要求先设置房间口令。 |
| 编辑公告 | 修改房间顶部公告板内容,所有人只读可见。 |
| 销毁房间 | 删除房间及全部数据,不可逆,需二次确认。 |
清除浏览器缓存、换设备或 owner_token 丢失后,房主控制区不再显示。此时可用创建时备份的 recovery_key 找回(见下一节)。
recovery_key 即可重新获得房主控制区,无需离开当前页面。若 owner_token 丢失,但你还留有创建时的 recovery_key:
recovery_key 且本机 owner_token 已丢失,将无法找回房主身份(房间内容仍在,但无法再管理/销毁)。这是「无账号体系」的固有取舍,请务必备份。owner_token 存在浏览器 localStorage,换设备/清缓存后即丢失,需靠 recovery_key 找回。owner_token(本机)或 recovery_key(备份)。两者皆失 = 永久失去房主管理权。创建房间时请先复制 recovery_key 再关闭弹窗。可以。房间码由你指定,4–32 位「小写字母 + 数字」,如 team9、note2026。若已被占用,会提示直接进入。
早期版本的轮询刷新可能造成回声。现已改用 WebSocket 实时推送 + 时间戳 LWW 策略,输入不会丢失;若仍偶发,通常是本地有未提交草稿被服务端内容短暂覆盖,刷新后即一致。
口令本身没有找回机制(服务端只存哈希)。若你是房主,可用 recovery_key 认领权限后,在房主控制区把房间转回公开,再重新设置口令。
共享文本上限约 512 KB(约 50 万汉字),公告 ≤ 2 KB。超限会被拒绝并提示。
采用「后写覆盖」策略,不做逐字合并。适合协作起草/记录,不适合像文档那样精细的并行排版。如需光标级协同,需引入 Yjs 等专业方案。
在。房间与内容持久化在 D1 数据库,关掉浏览器后凭房间码仍可重新进入。