大家好,
我現在在開發一個web應用程式,
其中有個功能是共同編輯,
像是google doc那種多人編輯同一篇文章。
我先附上部份code:
HTML:
<div class="text_content">
/*這是編輯區塊*/
</div>
JavaScript:
/*考量到對Server的負擔,
所以是用keyup event來觸發timeout來
呼叫web socket發送編輯區塊內的文字給每個使用者
*/
var timeout;
function keyUpEvent(){
window.clearTimeout(timeout);
timeout = window.setTimeout(呼叫WebSocket, 2000);
/*使用者打字停下來兩秒後才會呼叫WebSocket*/
}
然後是用
$(".text_content).html(發送的文字);
來覆寫編輯區塊的文字
表達能力好像不是很好QQ
問題來了,
一、會有吃字的問題
可能使用者A打到一半就被使用者B所輸入的內容蓋掉,
一般的話如果每keyup一次就發送應該就可以大幅減少這問題,
只是會嚴重造成server的工作量暴增(?)
二、只要WebSocket把文字傳送來之後,
因為是用html()來修改編輯區塊,
輸入的游標會跳到div的最頂端或者不見,
以上兩個問題有比較好的解決方法嗎?
只求提示,感謝板上的高手們