2016-12-26 2 views
0

클라이언트 측에서는 소켓을 사용하여 서버에 델타를 발사 한 onChange 이벤트 핸들러가 있고 모든 사용자에게 서버가 있기 때문에 항상 매번 사용자는 새로운 델타를 받으면 에이스가이를 적용한 다음 동일한 델타를 다시 모든 사용자에게 재전송 할 '변경'이벤트를 내 보냅니다. applyDelta가 'change'이벤트를 내보내는 것을 막기 위해 이것을 방지하기 위해 할 수있는 일이 있습니까?에이스 에디터가 socket.io와 함께 무한 루프를 일으키고 있습니다

답변

0

나는이

socket.on('newDelta', (delta) => { 
    applyingChanges = true; 
    aceDocument.applyDelta(delta); 
    applyingChanges = false; 
}); 

aceEditor.on('change', (delta) => { 
    if(!applyingChanges) 
     socket.emit('newChanges', delta); 
}); 
같은 델타 을 적용 할 때 플래그를 추가하여이 문제를 해결했습니다