Ace 编辑器导致 socket.io 无限循环
Ace Editor is causing infinite loop with socket.io
在我的客户端,我有一个带有 onChange 事件处理程序的 ace 编辑器,它发出
使用 socket.io 将增量发送到服务器,然后从服务器发送到所有用户,因此每次用户收到新的增量 ace 都会应用它,然后发出 'change' 事件,该事件将向所有用户重新发送相同的增量再次用户。
我可以做些什么来防止这种情况发生,例如重写 applyDelta 以防止它发出 'change' 事件?
我通过在应用增量时添加一个标志解决了这个问题
像这样
socket.on('newDelta', (delta) => {
applyingChanges = true;
aceDocument.applyDelta(delta);
applyingChanges = false;
});
aceEditor.on('change', (delta) => {
if(!applyingChanges)
socket.emit('newChanges', delta);
});
在我的客户端,我有一个带有 onChange 事件处理程序的 ace 编辑器,它发出 使用 socket.io 将增量发送到服务器,然后从服务器发送到所有用户,因此每次用户收到新的增量 ace 都会应用它,然后发出 'change' 事件,该事件将向所有用户重新发送相同的增量再次用户。 我可以做些什么来防止这种情况发生,例如重写 applyDelta 以防止它发出 'change' 事件?
我通过在应用增量时添加一个标志解决了这个问题 像这样
socket.on('newDelta', (delta) => {
applyingChanges = true;
aceDocument.applyDelta(delta);
applyingChanges = false;
});
aceEditor.on('change', (delta) => {
if(!applyingChanges)
socket.emit('newChanges', delta);
});