Php 构建协作工具-检查用户当前是否正在编辑/拖动图元并显示对话框

Php 构建协作工具-检查用户当前是否正在编辑/拖动图元并显示对话框,php,javascript,jquery,mysql,user-interface,Php,Javascript,Jquery,Mysql,User Interface,嗨,有了一些想法真的 我已经建立了一个拖放式协作工具(有点像一个情绪板),供人们发布想法进行协作。全部通过jqueryui由AJAX提供支持,Jquery通过PHP/Mysql处理位置和数据存储。我的问题是,假设我有2个用户。用户1拖动并调整图像大小并移动它-用户2拖动相同的图像,用户1将看到其图像移动并在用户2放置的位置弹出 我能检测到用户1的ajax调用或编辑或拖动,然后对用户2说有一个对话框可以说“正在编辑”或类似的话吗?如果是这样的话,我该怎么做 希望我的唠叨有意义?我附上了一张图片来说

嗨,有了一些想法真的

我已经建立了一个拖放式协作工具(有点像一个情绪板),供人们发布想法进行协作。全部通过jqueryui由AJAX提供支持,Jquery通过PHP/Mysql处理位置和数据存储。我的问题是,假设我有2个用户。用户1拖动并调整图像大小并移动它-用户2拖动相同的图像,用户1将看到其图像移动并在用户2放置的位置弹出

我能检测到用户1的ajax调用或编辑或拖动,然后对用户2说有一个对话框可以说“正在编辑”或类似的话吗?如果是这样的话,我该怎么做

希望我的唠叨有意义?我附上了一张图片来说明我的观点


非常感谢

您可以使用draggable的开始事件

$( ".selector" ).draggable({
   start: function(event, ui) { ... }
});
并锁定该项以供其他用户拖动。只需创建一列“draggedBy”,并输入当前正在拖动它的用户名,否则为NULL

如果您喜欢这种方法,您可能希望在拥有锁的用户断开连接的情况下,设置几秒钟的超时时间,以避免永远锁定该项。您可以创建第二列draggingStartedAt,并将当前时间戳放入其中。现在只要小心这个锁,如果它不超过最大锁定时间,也许是10秒,或者其他什么


如果您需要更复杂的东西,有许多锁定方法:

您当前如何处理向客户端发送更新的问题?你使用轮询吗?我认为唯一的方法是让用户1的窗口每隔x个时间不断轮询服务器的更改。你可以将它限制在窗口有焦点的时候,这样它就不会在背景窗口中无限期地进行。为所有的评论干杯!我考虑过停止拖动的选项,但不确定由谁来实施。这应该是朝正确方向迈出的一大步,干杯!您可能需要防止其他人在任何情况下拖动,因为其他人可能仍会尝试拖动在他们前面移动的项目。永远不要相信用户会做正常的事情;)@本·格里菲斯-是的,用户都是奇怪的野兽!