我正在设计一个协作系统,多个用户可以在其中编辑同一个文档,很像 googledocs,我猜是“搜索建议”,但绝不是高级的。
我的问题是,我的设计可行吗?我知道足够的 php/ajax 来设计这个,使用 jQuery 作为 ajax 部分。但是我从来没有做过这样的系统,因此设计可能存在很大的缺陷。
网页的可编辑部分是一个表格,其中可以编辑某些单元格(同样很像 google docs 电子表格)。
理论上这会起作用,每当更改表格单元格时,更改都会存储在历史记录中,并且每隔 1000 毫秒(在最后一个帖子成功返回后)我将单元格更改发布到服务器
同时,另一个 ajax 函数轮询服务器(也是在最后一次调用成功返回后每 1000 毫秒)并请求对所有单元格所做更改的列表。
这是谷歌的简单方法吗?
最佳答案
这是一个值得商榷的话题,大多数解决方案都取决于要求和用例,而不是什么是“正确的”。更复杂的解决方案之一是使用信号量:
http://en.wikipedia.org/wiki/Semaphore_(programming)
铁路信号量标志: http://en.wikipedia.org/wiki/Railway_semaphore_signal
也就是说,在您的情况下,我怀疑应该使用“最后写入的值”。只需让每个编辑在服务器上排队,然后应用到它的单元格。显然,在某些情况下数据会被不当覆盖,但这正是人为因素发挥作用的地方。
您可以选择检测两个用户何时聚焦并编辑同一个单元格——发生这种情况时,向每个用户发送通知,告知他们的更改可能与另一个用户冲突。攻击性最低的用户会退缩并去做其他事情。显然还有更多情况,例如批量编辑,但同样,这完全取决于您的要求。
关于javascript - 我多久可以让 ajax 请求一次新数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3583751/