Skip to content

Nayuta123456/Inchat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

局域网协同文档编辑器

一个轻量级的实时协同文档编辑器,支持多人同时编辑和 Markdown 预览。

功能特性

  • 实时协同编辑:多人同时编辑,实时同步
  • 📝 Markdown 支持:支持常用 Markdown 语法,实时预览
  • 🚀 轻量级:纯 Go 实现,无需数据库,开箱即用
  • 🌐 局域网访问:支持局域网内多设备访问
  • 🔄 自动重连:网络断开自动重连
  • 💡 简洁界面:双栏布局,左侧编辑,右侧预览

技术栈

  • 后端:Go + WebSocket + Gorilla WebSocket
  • 前端:原生 HTML + CSS + JavaScript
  • 算法:Operational Transform (OT) 算法保证协同编辑一致性

快速开始

1. 安装依赖

确保已安装 Go 1.21 或更高版本。

go mod download

2. 运行服务器

go run main.go

服务器启动后会显示:

========================================
   协同文档服务器已启动
========================================
本地访问: http://localhost:8080
局域网访问: http://192.168.x.x:8080
========================================
按 Ctrl+C 停止服务器

3. 访问编辑器

  • 本机访问:在浏览器中打开 http://localhost:8080
  • 局域网访问:在其他设备上打开显示的局域网地址

4. 开始协同编辑

  • 多个用户同时打开页面即可开始协同编辑
  • 支持的 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

工作原理

Operational Transform (OT)

本项目使用 OT 算法来处理多用户同时编辑时的冲突:

  1. 每个客户端的编辑操作会被转换为 insertdelete 操作
  2. 操作通过 WebSocket 发送到服务器
  3. 服务器广播操作到所有其他客户端
  4. 客户端接收操作后应用到本地文档

WebSocket 通信

  • 客户端连接时注册到 Hub
  • 所有编辑操作通过 WebSocket 实时广播
  • 支持自动重连机制

注意事项

  • 本程序设计用于局域网环境,未实现用户认证
  • 文档内容仅保存在内存中,服务器重启后会丢失
  • 建议在局域网环境下使用,不要暴露到公网
  • 如需持久化存储,可扩展添加数据库支持

许可证

MIT License

About

A Local Area Network Chat System

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors