您的位置:首页 > Web前端 > JavaScript

随想(三) -- 如何给基于Javascript的rich editor添加协同功能

2016-06-14 15:18 302 查看
实现背景

手头已经有一个基于Javascript的富文本编辑器,基本架构采用MVC,其中View层负责相应用户行为(例如文本输入等),之后把对应的行为通知Controller, 由Controller把行为封装成命令(command),由命令来操作数据,之后数据层触发各种change事件,通知View层,View层再进行渲染。大体结构如下:



实现方案

基本思想:

1,尽量在少改动现有代码结构的基础上引入协同的逻辑

2,考虑到参与人员大都熟悉javascript开发,而在server端开发经验很少,所以尽量简化协同server的逻辑,使其仅仅从事命令的排序和转发。

基本架构如下:



其中:

1, 协同模块和协同server之间,采用websocket进行通信。

2,之前命令里嵌套层次太深,在命令序列化的时候,效率太低,所以把命令重新改写,保持两层结构,第一层是复合命令,第二层原子命令。符合命令包含若干原子命令,但不能直接对数据进行操作,数据操作的工作都有原子命令完成。

3,为了提高用户输入响应时间(因为先发送命令,等到命令返回后再执行,时延较大),对于用户已经锁定的段落,采用先执行再发送的策略

4,为了减少流量占用,对于序列化后的命令进行压缩
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息