问题
当用户drags and drops
使用jQuery UI
时,我希望broadcast
drop
给其他用户,以便他们可以看到{{{}的更新位置1}}。
问题
如何配置脚本以便能够发送' drop'使用element
的元素?
代码
客户端(放置设置)
socket.broadcast.emit
服务器(某些套接字设置)
$('#dropArea').droppable({
drop: function(event, ui) {
var dropped = ui.draggable;
var droppedOn = $(this);
$(dropped).detach().css({
top: 0,
left: 0
}).appendTo(droppedOn);
socket.emit('status', {
status: 'ToDo',
_id: $(this).find('p').data('id')
});
}
});
注意
io.sockets.on('status', function(data) {
Item.findOne({_id: data._id}, function(err, item) {
if(err) throw err;
item.status = data.status;
item.save();
});
});
"状态"更新数据库中的元素状态
答案 0 :(得分:0)
您也可以在客户端拥有此事件的监听器,
io.sockets.on('status', function(data) {
//do the update in client here
});
另外一件事是你需要在这里使用socket.broadcast.emit
。因为socket.emit
会将消息广播给正在广播消息的客户端的所有客户端。
答案 1 :(得分:0)
我找到了一种方法。我通过套接字在对象中发送了项目所需的相关数据。
在服务器上,我从mongoDB做了我需要的状态更新,然后将对象广播回所有客户端。从客户端,将项目从当前位置移除并重新构造,并使用jquery将其附加到新位置。