大家好,
我现在在开发一个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的最顶端或者不见,
以上两个问题有比较好的解决方法吗?
只求提示,感谢板上的高手们