【发布时间】:2019-07-23 06:38:48
【问题描述】:
我正在使用 jquery 拖放和 websocket。当用户拖放项目时,它会在其他用户屏幕上自动更新。喜欢这个视频:https://youtu.be/JHndS1ps_f0
我希望用户拖动成员时,其他用户不能拖动该成员。这是我的代码:
var socket = new WebSocket('ws://' + window.location.host + '/ws');
var id_user = $(".id_user").attr('data-id');
$(".item").draggable({
revert: true,
revertDuration: 0,
drag: function( event, ui ) {
var team_id_previous = $(this).attr('data-id-team');
var member_id = $(this).attr('data-id-member');
// Send to server
socket.send(
JSON.stringify({
team_id_previous: team_id_previous,
member_id: member_id,
user_id: id_user,
type: "drag"
})
);
}
});
从服务器收听消息:
socket.onmessage = function (e) {
var msg = JSON.parse(e.data);
var item = $("[data-id-member=" + msg.member_id + "][data-id-team=" + msg.team_id_previous + "]");
if (msg.type === "drag" && msg.user_id != id_user) {
item.draggable('disable');
item.css("background-color", "gainsboro");
}
};
如果我轮流拖动,在这个屏幕上拖动,然后在另一个屏幕上拖动,它会被禁用。但是,当多人同时拖动一个成员时,延迟几乎= 0,那么两个都可以拖动。我能做些什么来解决这个问题。谢谢。
【问题讨论】:
标签: jquery websocket drag-and-drop draggable drag