2016-12-26 10 views
0

私のクライアント側では、onchangeイベントハンドラを持つエースエディタを持っています。 ソケットとのデルタをsocket.ioでサーバからすべてのユーザに送信します。ユーザーは新しいデルタを受け取ってそれを適用し、同じデルタをすべてのユーザーに再び再送信する「変更」イベントを発行します。 applyDeltaをオーバーライドして「変更」イベントが発生しないようにするために、これを防ぐためにできることはありますか?Ace Editorはsocket.ioで無限ループを引き起こしています

答えて

0

私はこの

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

aceEditor.on('change', (delta) => { 
    if(!applyingChanges) 
     socket.emit('newChanges', delta); 
}); 
のようなデルタ を適用するときにフラグを追加することで、この問題を解決してきました
関連する問題