前端或后端如何判断一个页面正被另个人打开着?

现在遇到的问题是,用户老是重复打开页面去编辑,或者多台电脑,或者多个浏览器里编辑同一个页面,做了自动保存功能、自动备份功能、自动本地缓存功能。

但是到用户手里,就各种数据丢失,我也知道多开窗口,每个窗口的数据会相互覆盖,但是怎么才能精准确定另一个窗口正在编辑呢?

是不是只有长连接一种方法能精准判断某个页面是否还在线?

阅读 4k
2 个回答

你解决问题的关注点不太正确
要解决的是客户多窗口编辑保存,数据丢失、混乱的问题。知道客户哪个编辑窗口在线并不能解决这个。

解决思路:
每次数据保存,生成一个唯一的版本token(比如uuid)
用户打开编辑页时,把版本token带下去
客户提交时,比对数据当前版本token
如果token一致,说明客户提交前没有其它人提交过,可以保存。
如果token不一致,则说明中间有其他人提交过,提示用户请在最新版本上做修改,重新加载编辑页。
想做的更友好的话,考虑内容比对,显示差异,让用户自己合并后提交。

可以用websocket去判断
当窗口处于打开状态时,让前端通过websocket去连接后端,后端就可以根据用户的连接数判断打开了多少个窗口。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题