我想要做的是尽可能少地在两个客户端之间同步画布。我找到的最好的方法之一就是使用Fabric Observables。
我真的认为做(例如)下面的工作会有效。
CanvasIO.socket = io.connect('http://localhost:8080');
CanvasManager.canvas.on('object:added', function(data) {
CanvasIO.socket.emit("object:added", data);
});
CanvasIO.socket.on('object:added', function(data) {
CanvasManager.canvas.trigger('object:added', data);
});
但是,trigger(event, data)
仅触发事件并且不创建对象。
关于这个问题,最好的解决方法是什么?我似乎无法找到适当的方法来调用。
答案 0 :(得分:0)
嗯,这并不容易。您需要自己解析事件数据。我的意思是选择目标,选择您需要的数据,然后通过套接字发送。 其次你必须记住,通过socket发送对象需要使用.json或.send方法(第二个只接受String)。
on recive build" new Object"基于下载的参数,如下:
var obj = new Object(_downloadedData);
canvas.add(obj);
当然我简化了它。 要使其完全正常工作,您需要检测画布中的每个更改(移动,添加,索引更改,分组等)。从垃圾数据中删除拾取的事件,并将仅推送到套接字有用的参数。 (例如,当您进行选择或简单的垂直拖动时,您不需要发送整个对象或路径向量...)。
相信我,如果你仍然愿意制作这个协作画布,那么还有很多工作要做。