gpt4 book ai didi

javascript - 监控用户 session 以防止编辑冲突

转载 作者:数据小太阳 更新时间:2023-10-29 06:03:48 25 4
gpt4 key购买 nike

我正在研究类似于 pastebin 的东西(是的,它是 that 通用的)但允许多个用户编辑。明显的问题是多个用户试图编辑同一个文件。我正在考虑在一个用户处理文件时锁定文件(这不是最好的解决方案,但我不需要太复杂的东西),但为了防止/警告用户我显然需要一个用于监视每个用户的编辑 session 的系统。使用数据库和 ajax,我正在考虑两种解决方案。

第一种方法是让编辑页面以任意时间间隔(比如一分钟)对服务器执行 ping 操作,然后它会更新数据库中的编辑 session 条目。然后下一次脚本请求编辑时,它会检查最近的 ping,如果最近的是另一个任意时间之前,比如五分钟,那么我们假设前一个用户已经退出并且可以再次编辑文件。当然,这种方法的问题在于,先前用户已经退出的假设只是一个假设。他可能是 Wi-Fi 连接不稳定,然后就断网了十分钟,而且一直开着 window 。

当然,要处理这个问题,我们必须让服务器响应来自先前关闭的 session 的新请求并返回一个错误,告诉客户端向用户指出他的 session 已经结束,然后通过将其保存为服务器上的另一个文件并要求用户手动合并它等方式来处理它。不用说,这对最终用户来说是相当可怕的。

所以我想出了另一个解决方案。也可以在用户 session 结束时触发 unload 事件,但我不确定这是否可靠。

有没有人有任何其他更优雅的解决方案来解决这个问题?

最佳答案

如果您希望文件的并发编辑次数较少,您可以只在数据库中存储文件的版本号,当用户将文件下载到浏览器中时,他们也会获得版本号。只有版本号匹配时,他们才可以上传更改。第一个上传者获胜。当检测到冲突时,您应该发回最新的文件和用户的更改,以便用户可以手动合并更改。优点是即使是同一个用户同时进行两次编辑,它也能工作。如果此功能最终被频繁使用,您可以添加类似于 diff 工具使用的客户端合并(但在这种情况下您可能需要保留旧版本)。

关于javascript - 监控用户 session 以防止编辑冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3530165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com