随想(三) -- 如何给基于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,为了减少流量占用,对于序列化后的命令进行压缩
手头已经有一个基于Javascript的富文本编辑器,基本架构采用MVC,其中View层负责相应用户行为(例如文本输入等),之后把对应的行为通知Controller, 由Controller把行为封装成命令(command),由命令来操作数据,之后数据层触发各种change事件,通知View层,View层再进行渲染。大体结构如下:
实现方案
基本思想:
1,尽量在少改动现有代码结构的基础上引入协同的逻辑
2,考虑到参与人员大都熟悉javascript开发,而在server端开发经验很少,所以尽量简化协同server的逻辑,使其仅仅从事命令的排序和转发。
基本架构如下:
其中:
1, 协同模块和协同server之间,采用websocket进行通信。
2,之前命令里嵌套层次太深,在命令序列化的时候,效率太低,所以把命令重新改写,保持两层结构,第一层是复合命令,第二层原子命令。符合命令包含若干原子命令,但不能直接对数据进行操作,数据操作的工作都有原子命令完成。
3,为了提高用户输入响应时间(因为先发送命令,等到命令返回后再执行,时延较大),对于用户已经锁定的段落,采用先执行再发送的策略
4,为了减少流量占用,对于序列化后的命令进行压缩
相关文章推荐
- 2015-2016网页设计趋势分析 Web Design of Trends
- 所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
- Spring整合WebSocket应用示例(上)
- Javascript实现简单的富文本编辑器附演示
- PHP中使用协同程序实现合作多任务第1/2页
- 浅析nodejs实现Websocket的数据接收与发送
- Spring整合websocket整合应用示例(下)
- 基于html5和nodejs相结合实现websocket即使通讯
- 基于node实现websocket协议
- Android中使用WebSocket实现群聊和消息推送功能(不使用WebView)
- ThinkPHP中使用Ueditor富文本编辑器
- php使用websocket示例详解
- php+html5基于websocket实现聊天室的方法
- Javascript WebSocket使用实例介绍(简明入门教程)
- java中实现兼容ie6 7 8 9的spring4+websocket
- HTML5之WebSocket入门3 -通信模型socket.io
- Java后端Tomcat实现WebSocket实例教程
- 使用JavaWeb webSocket实现简易的点对点聊天功能实例代码
- Spring和Websocket相结合实现消息的推送
- Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器