一个轻量级的实时协同文档编辑器,支持多人同时编辑和 Markdown 预览。
- ✨ 实时协同编辑:多人同时编辑,实时同步
- 📝 Markdown 支持:支持常用 Markdown 语法,实时预览
- 🚀 轻量级:纯 Go 实现,无需数据库,开箱即用
- 🌐 局域网访问:支持局域网内多设备访问
- 🔄 自动重连:网络断开自动重连
- 💡 简洁界面:双栏布局,左侧编辑,右侧预览
- 后端:Go + WebSocket + Gorilla WebSocket
- 前端:原生 HTML + CSS + JavaScript
- 算法:Operational Transform (OT) 算法保证协同编辑一致性
确保已安装 Go 1.21 或更高版本。
go mod downloadgo run main.go服务器启动后会显示:
========================================
协同文档服务器已启动
========================================
本地访问: http://localhost:8080
局域网访问: http://192.168.x.x:8080
========================================
按 Ctrl+C 停止服务器
- 本机访问:在浏览器中打开
http://localhost:8080 - 局域网访问:在其他设备上打开显示的局域网地址
- 多个用户同时打开页面即可开始协同编辑
- 支持的 Markdown 语法:
- 标题:
# H1,## H2,### H3... - 粗体:
**文本**或__文本__ - 斜体:
*文本*或_文本_ - 删除线:
~~文本~~ - 代码:
`代码` - 代码块:
```代码块``` - 链接:
[文本](URL)
- 标题:
Inchat/
├── main.go # 主程序入口
├── go.mod # Go 模块文件
├── server/ # 服务器核心逻辑
│ ├── websocket.go # WebSocket 连接管理
│ ├── ot.go # OT 算法实现
│ └── markdown.go # Markdown 渲染
└── static/ # 前端资源
├── index.html # 主页面
└── app.js # 前端逻辑
# 构建当前平台
go build -o inchat
# 跨平台构建
# Windows
GOOS=windows GOARCH=amd64 go build -o inchat.exe
# macOS
GOOS=darwin GOARCH=amd64 go build -o inchat
# Linux
GOOS=linux GOARCH=amd64 go build -o inchat本项目使用 OT 算法来处理多用户同时编辑时的冲突:
- 每个客户端的编辑操作会被转换为
insert或delete操作 - 操作通过 WebSocket 发送到服务器
- 服务器广播操作到所有其他客户端
- 客户端接收操作后应用到本地文档
- 客户端连接时注册到 Hub
- 所有编辑操作通过 WebSocket 实时广播
- 支持自动重连机制
- 本程序设计用于局域网环境,未实现用户认证
- 文档内容仅保存在内存中,服务器重启后会丢失
- 建议在局域网环境下使用,不要暴露到公网
- 如需持久化存储,可扩展添加数据库支持
MIT License