防止 ckeditor 在文本由外部源更新时触发设置回调



我正在做一个实时的Vue项目,它使用ckeditor5作为文本编辑器。推送器是一个实时 API,它使用 websocket,将事件实时广播到其他推送器实例。 这是推杆

在 ckeditor 配置中,我传递了一个set回调。这个集合回调,在任何文本更改时触发,我用它来触发推送器事件,广播文本 对其他推送器实例的值。

当另一端的推送器实例收到事件时,问题就出现了,处理完后,Vue 被动地更新了 DOM 中的文本值,从而触发了上面提到的set回调,再次触发了事件。在实时环境中,它会弄乱值更新,并以文本闪烁结束。

在回调中,我只得到一个字符串值,我无法找出发起回调的原因,因此无法停止执行。

有没有办法防止 ckeditor5 触发回调?

这可能是每个基于 websocket 的项目都存在的问题。

问题是,当更改触发广播并且 Pusher 客户端接收并应用它时,它会随着客户端更改而广播。 当原始广播公司收到更改时,它无法确定它是否是自己的更改并再次应用它。

在我尝试创建 ckeditor 插件以过滤掉已初始化为 ckeditor 实例本身的传入更改失败后,我决定采取一种解决方法来解决此问题。

我创建了一个缓存,在广播初始化的更改之前,它会将它们存储几秒钟。当从 Pusher 客户端接收更改时,仅当缓存中不存在更改时,才会应用更改,因此它由另一个客户端初始化。

此解决方法在大多数情况下都有效,但仍然存在互联网连接速度非常慢且响应时间低的问题(这取决于缓存时间(。

最新更新