在线笔记,实时保存是怎么实现的?监听文字修改,然后 post 数据? 服务器压力大吗? 后端这块一般是怎么处理的?
![]() |
1
eason1874 265 天前
1 、监听修改,记录最后修改时间
2 、定时保存,记录最后保存时间,每隔 5 秒比较最后修改和最后保存时间,如果保存时间早于修改时间,那就提交保存 |
![]() |
2
estk 265 天前 via Android
一般是 websocket 通信吧
|
![]() |
3
luin 265 天前
大概就是定时 post 修改数据,后端合并版本(多人同时改动时需要)后存到对象存储或数据库中
|
4
whistleryz 265 天前 via iPhone ![]() 协作文档一般是编辑操作抽象为指令,post 到后端,后端进行 OT 操作入库,然后通过 socket 派发操作给所有浏览器再 OT
|
![]() |
5
yongchiu 265 天前
websocket 推送,每个在线文档都是一个房间,后台推送数据到前端
|
6
LxnChan 265 天前
定时 post 后台,把数据定时传回去而已
也会有加内容对比的,如果和多久时间前的内容一样则不往回 post |
7
HuangHuangHuang 265 天前
@estk 个人感觉,如果不是有双向通信的需求,比如能同时看到其他的修改状态的话,可以只用 post 请求就行,操作简单,服务端可控,扩展容易。
|
![]() |
8
XCFOX 265 天前
如果你关心在线多人文档的实现细节的话,可以看一下 yjs 的 demo
https://docs.yjs.dev/getting-started/a-collaborative-editor |
![]() |
9
mmdsun 261 天前 via iPhone
这种属于实时 web 应用吧。OneNote 电脑和手机同时打开同个文章,编辑的时候都是实时毫秒级别同步的,不是定时 POST 接口
后台相关技术: SignalR: https://dotnet.microsoft.com/zh-cn/apps/aspnet/signalr Java ,Spring 可以用,RSocket |