ACE编辑器正在用socket.io引起无限环路



在我的客户端,我的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);
});

相关内容

  • 没有找到相关文章

最新更新