Open
Description
I am developing a real time collaborative diagram editor. At the moment I am trying to implement the use case when a user sees a node is moved by another user. I thought that the EventListener positionChanged would be a nice fit for this use case. The Code looks like this:
When adding a node i add an EventListener. In there i change the state of serializedModel
.
node.registerListener({
positionChanged: (
e: BaseEntityEvent<ClassNodeModel>
) => {
window.console.error('positionChanged', e);
setSerializedModel(model.serialize());
},
});
serializedModel
is just the return value of model.serialize()
.
Then there is this useEffect
:
useEffect(() => {
window.console.error('useEffect', serializedModel);
sendJsonMessage({
serialized_diagram: serializedModel,
});
engine.repaintCanvas();
}, [serializedModel]);
In here a just send a message to my backend to synchronize with the other users.
The Problem right now is that the EventListener only works for a few seconds:
But when i do not set a state in the EventListener. So something likes this:
node.registerListener({
positionChanged: (
e: BaseEntityEvent<ClassNodeModel>
) => {
window.console.error('positionChanged', e);
},
});
Metadata
Assignees
Labels
No labels
Activity