javascript - 网站中的实时流媒体在线编辑器
问题描述
我正在开发一个 IDE 和编译器项目。所以我想将编辑器直播给同一个网站的成员,但我不希望它是像 YouTube Live 这样的视频流。编辑器对其他人应该是只读的
注意:编辑器是网页内置的
解决方案
这就是我解决这个问题的方法,如果我做的不正确或结构不正确,我很乐意根据评论反馈更新任何内容。
要实现像 google docs 这样的近实时更新,您需要某种形式的数据包/数据通信。通常,这涉及某种数据库,或在会话中向用户发送分组数据。我的猜测是,Google 会为您的文档保留一个小缓存,以了解当前正在使用该文档的人。然后它收集页面的数据,检查大小并查看自上次检查以来它是否发生了变化。它会在某人进行编辑后改变大小,并且可能有一种辅助方法可以确保如果您不是进行更改的人,它不会在 1 之后开始无限循环向人们发送更改人输入了 1 个字母。因此,现在页面识别出您已经进行了更改,因此它向浏览器“发送一个包含新文档内容的数据包”。其他没有的人 t 进行该编辑将收到更改,因为他们的客户端(谷歌文档会话)不断检查用于“传输”数据的文档的小型缓存。然后其他客户端会话有一个检查循环,它将每隔一段时间向缓存发送一个 ajax 请求以检查更新。如果它检测到有一个,那么它会提取该数据并适当地更新文档。
为了实现您正在谈论的这种“视频”视图,这相当于某人查看谷歌文档页面并且不允许做任何事情,除了查看它,而其他人(您)在他们的会话中编辑它。
我希望这有助于您了解完成此任务需要做什么。
有用的网址:
推荐阅读
- sql - Presto 性能调整,并行执行时查询要慢得多
- python - 如何使用子字符串对这个字符串列表进行排序?
- excel - 当我在 Excel 电子表格中的工作表之间链接单元格时,如何包含格式(颜色)?
- html - 在 ionic 2x 中切换更改嵌套按钮颜色
- c# - 二叉树的结构
- visual-studio-code - 如何在 VSCode 中设置 Elixir、Erlang
- windows - Windows 中是否内置了安全的非对称密钥存储?
- c# - 检查字符串是否正好包含一个字符
- corda - 在 Corda 事务中,获取与特定状态关联的命令
- constructor - Ionic 3 - 在我再次“服务”之前看不到 json 文件的更改