Open JavanTang opened 1 year ago
在线协作文档的同步和冲突问题解决思路
数据更新方式: 增量更新,否则传输数据量过大
显示方案:
触发式实时显示 优点:
operate_id
方便快速进行新建, 更新和删除操作{
"operate_id":"asdfkjoiufoiqknt",
"type":"add",
"content":{
%%具体数据%%
}
}
{
"operate_id":"asdfkjoiufoiqknt",
"type":"update",
"content":{
%%具体数据%%
}
}
{
"operate_id":"asdfkjoiufoiqknt",
"type":"remove"
}
全方位实时显示 优点:
实时监听
并处理
服务器转发的信息,同时要监听当前用户的操作
,当用户进行操作时,应当首先将操作监听分为以下:
绘图形
类: 绘制图像的特点是起始点始终不变
,而最终确认的点
一直在变operate_id
方便快速进行新建, 更新和删除操作{
"operate_id":"asdfkjoiufoiqknt",
"type":"add",
"content":{
%%举例%%
"module": "圆形", %%具体模块类型,方便前端接收到之后进行解析%%
"start_point": [2,3], %%起始点%%
"end_point": [2,3] %%结束点,这个也是实时更新点%%
}
}
{
"operate_id":"asdfkjoiufoiqknt",
"type":"update",
"content":{
%%举例%%
"module": "圆形", %%具体模块类型,方便前端接收到之后进行解析%%
"start_point": [2,3], %%起始点%%
"end_point": [2,3] %%结束点,这个也是实时更新点%%
}
}
{
"operate_id":"asdfkjoiufoiqknt",
"type":"remove"
}
@uiuing 更新可以参考上面的数据结构
同时可以考虑一下用户绘制
操作与更新绘制
操作这两者如何复用, 因为这里涉及到了一个展示的美观问题,比如时间序列中A用户在第1秒绘制在(1,1)坐标,第1.2秒绘制(1,3)坐标,第3秒绘制(5,5)坐标,如何将这个绘制过程优雅展示出来是一个问题。
而且如果要展示这些动作,那么为了防止服务器转发延迟,可能还需要存储时间戳。
也可以先插个眼,把这个时间戳、函数先加进去,代码中留个TODO
用户单独拥有所属权、所有用户拥有所属权 暂时放一放
收到🫡
待 #3 完善之后进行更具体的细节实现,需要定制数据的更新hook,可监听数据的增量更新情况(目前先做同步的,而不是异步的)