使用mongodb和nodejs的实时网络应用程序

Poh*_*How 17 real-time mongodb node.js socket.io

我一直在考虑如何使用nodejs/socket.io/mongodb创建一个实时Web应用程序.这个想法非常类似于谷歌文档,其中在页面上编辑的对象在所有客户端浏览器上发出并重新呈现.

这样做的最佳方法是什么?从我读过的内容中我可以想到3种方式:

1)使用mongodb oplogs

添加一个'监听器'到mongodb集合,每当对集合进行更改时重新呈现页面的一部分(缺点:慢?)

2)使用本地json

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

3)使用purely socket.io

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

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

Vad*_*est 21

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

我们使用的是:

  • Node.js,带有Hapi.js框架(基于表达式)
  • Socket.io
  • 没有 MongoDB,而是令人敬畏的RethinkDB,默认情况下它是实时的,并且基本上使用听众来告诉你什么时候发生了变化.(mongoDB在我们看来很糟糕,我们过去使用它,感觉就像"再也不会",但这是我们的意见)
  • React/Redux只为已更改的元素更新DOM,我们认为Angular的两种方式效果不佳,因为多个用户可能同时修改同一页面,因此重新渲染所有元素会导致失去焦点.

老实说,它的速度非常快.