使用socket.io替换Mongodb的轮询机制

时间:2014-01-13 16:37:01

标签: node.js mongodb socket.io

我有一个使用Mongodb和Nodejs的应用程序。还有另一个外部Web服务可以收集数据并更新Mongodb。我希望有一种方法可以在网页中自动发布这些更改,而无需进行实际轮询。目前,我在socket.io中使用轮询机制将更改推送到UI。是否可以使用socket.io自动发布Mongodb的更改来刷新UI?

1 个答案:

答案 0 :(得分:2)

因此无法控制Web服务,它是一个将数据上传到mongo的外部应用程序。

MongoDB为新数据提供了一种特殊类型的轮询,但不包括修改现有数据的情况。

通过结合MongoDB的上限集合和tailable游标功能,可以对新数据进行优化轮询。这是blog post of how to do itcode example

因此,实现您提到的内容的方法是通过轮询,并且仅针对新数据的情况提供此优化。

如果有权访问上传网络服务:

对于没有使用服务器socket.io push进行轮询的解决方案,您需要使上载Web服务在同一节点进程中运行,并从Mongo调用io.sockets.emit('yourChannel', newData);中保存的回调中运行,以广播新的数据到所有浏览器客户端。