Я разрабатываю совместную доску с использованием fabricjs. Когда пользователь создает новый объект, я сериализую его и отправляю его всем другим пользователям.
var rect = new fabric.Rect();
canvas.add(rect);
socket.emit("newObject", JSON.stringify(rect)); // sends the object to other users
Когда эти пользователи получают сериализованный объект, его следует десериализовать и добавить в свой холст. Каков наилучший способ сделать это? Я не смог найти функцию, которая десериализует один объект, только весь холст (loadFromJSON), поэтому я реализовал нечеткое решение:
function drawRoomObjects(roomObjects){
var canvasString = "{\"objects\":[";
for(var roomObjectKey in roomObjects){
canvasString += roomObjects[roomObjectKey];
}
canvasString += "], \"background\":\"\"}";
var tmpCanvas = new fabric.Canvas();
tmpCanvas.loadFromJSON(canvasString);
for(var k in tmpCanvas.getObjects()) {
canvas.add(tmpCanvas._objects[k]);
}
canvas.renderAll();
}
Любые предложения для лучшего способа сделать это?