1

问题

当一个用户使用drags and drops一个元素时jQuery UI,我想broadcastdrop其他用户发送一个元素,以便他们可以看到element.

问题

如何配置脚本以便能够使用 'dropping' 发送元素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();
    });
  });

笔记

emit状态”更新数据库中的元素状态

4

2 回答 2

0

您也可以在客户端设置此事件的侦听器,

  io.sockets.on('status', function(data) {
   //do the update in client here
  });

还有一件事是你需要在这里使用socket.broadcast.emit。因为 socket.emit将向所有客户端广播消息,客户端正在广播消息。

于 2013-03-06T03:52:08.287 回答
0

我想出了一个方法。我通过套接字发送了对象中项目所需的相关数据。

在服务器上,我从 mongoDB 进行了所需的状态更新,然后将对象广播回所有客户端。从客户端,从当前位置删除项目并使用 jquery 重新构建并将其附加到新位置。

于 2013-03-07T10:17:20.067 回答