我一直在考虑如何使用nodejs/socket制作一个实时web应用程序.io/mongodb.这个 idea 与谷歌文档(google docs)非常相似,在谷歌文档中,页面上编辑的对象会在所有客户端浏览器上发出并重新呈现.

做这件事最好的方法是什么?根据我所读到的,我可以想出三种方法:

1) 使用mongodb oplogs

在mongodb集合中添加一个"监听器",每当对集合进行更改时,都会重新播放页面的部分内容(缺点:慢?)

2) 使用本地json

将mongodb数据检索到json文件中,使用fs进行编辑,保存到mongodb,完成后删除json(缺点:在数据库和实际应用程序之间有额外的层很麻烦)

3) 使用纯套接字.木卫一

重新渲染而不存储,仅在所有更改完成后保存(缺点:文件可能无法在所有浏览器中正确呈现)

有没有更好的方法来实现这一点?(谷歌文档是如何工作的?)非常感谢任何人能提供的帮助!

推荐答案

我们go 年开发了一个实时应用程序,基本上是一个供作者在同一页面上工作的工具,他们可以在该页面上添加/删除/编辑元素(文本、图像、视频等)

我们使用的是:

  • node .js和Hapi.js框架(基于express)
  • 插座木卫一
  • No MongoDB,而Aweasome RethinkDB,默认情况下是实时的,基本上使用监听器告诉你什么时候发生了变化.(mongoDB sucks in our opinion, we used it in the past and it feels like "never again", but that's our opinion)
  • React/Redux为了只更新已经更改的元素的DOM,在我们看来,这两种方法都不能很好地工作,因为几个用户可能会同时修改同一个页面,因此重新呈现所有元素会导致失go 焦点.

老实说,它的速度真是太快了.

Mongodb相关问答推荐

使用查询参数过滤MongoDB Go驱动程序时出现问题

MongoDB—基于数组中同一文档中的另一个字段更新字段

MongoDB聚合:将文档列表转换为列表

MongoDB 聚合 - $project 和 $match 阶段未按预期工作

如何使用 MindsDB 和 MQL(对于我的 MongoDB 实例)实施零样本分类?

MongoDB:嵌套数组计数+原始文档

如何将交易列表变成 token 数量的对象?

如何将记录从一个 mongo 数据库插入另一个?

哪个库最适合用于带有 Scala 的 MongoDB?

具有多个字段的mongodb文本搜索

从性能Angular 来看 MongoDB 嵌入式与参考

请按语法排序 Mongoid Scope

MongoDb 数据库与集合

Spring Data MongoDB 中的独特之处

如何从 Mongoose 模型对象中获取集合名称

如何向 mongodb 2.6 添加身份验证?

如何在 $match 内的 mongodb 聚合查询中使用 $regex

如何通过键名从 mongoDB 中检索值?

如何在 Ubuntu 10.04 中使用 --auth 选项重新启动 mongodb?

Mongoose 为所有嵌套对象添加 _id