在jQuery UI上向所有客户端广播套接字

时间:2013-03-05 21:40:23

标签: jquery-ui socket.io

问题

当用户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(); }); }); "状态"更新数据库中的元素状态

2 个答案:

答案 0 :(得分:0)

您也可以在客户端拥有此事件的监听器,

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

另外一件事是你需要在这里使用socket.broadcast.emit。因为socket.emit会将消息广播给正在广播消息的客户端的所有客户端。

答案 1 :(得分:0)

我找到了一种方法。我通过套接字在对象中发送了项目所需的相关数据。

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