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

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


实现方案
基本思想:
1,尽量在少改动现有代码结构的基础上引入协同的逻辑
2,考虑到参与人员大都熟悉javascript开发,而在server端开发经验很少,所以尽量简化协同server的逻辑,使其仅仅从事命令的排序和转发。
基本架构如下:

其中:
1, 协同模块和协同server之间,采用websocket进行通信。
2,之前命令里嵌套层次太深,在命令序列化的时候,效率太低,所以把命令重新改写,保持两层结构,第一层是复合命令,第二层原子命令。符合命令包含若干原子命令,但不能直接对数据进行操作,数据操作的工作都有原子命令完成。
3,为了提高用户输入响应时间(因为先发送命令,等到命令返回后再执行,时延较大),对于用户已经锁定的段落,采用先执行再发送的策略
4,为了减少流量占用,对于序列化后的命令进行压缩






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值