在我的客户端,我的ACE编辑器带有OnChange Event Handler的发射器使用socket.io到服务器的deltas,然后从服务器到所有用户,因此,每次用户收到新的Deltas Ace时,都会应用它,然后发出"更改"事件,这将再次向所有用户重新发送相同的deltas。我可以做些什么来防止这种情况,例如覆盖appldelta以防止其发出"更改"事件?
我通过在应用deltas时添加标志解决了这个问题像这样
socket.on('newDelta', (delta) => {
applyingChanges = true;
aceDocument.applyDelta(delta);
applyingChanges = false;
});
aceEditor.on('change', (delta) => {
if(!applyingChanges)
socket.emit('newChanges', delta);
});