我有一个使用Mongodb和Nodejs的应用程序。还有另一个外部Web服务可以收集数据并更新Mongodb。我希望有一种方法可以在网页中自动发布这些更改,而无需进行实际轮询。目前,我在socket.io中使用轮询机制将更改推送到UI。是否可以使用socket.io自动发布Mongodb的更改来刷新UI?
答案 0 :(得分:2)
因此无法控制Web服务,它是一个将数据上传到mongo的外部应用程序。
MongoDB为新数据提供了一种特殊类型的轮询,但不包括修改现有数据的情况。
通过结合MongoDB的上限集合和tailable游标功能,可以对新数据进行优化轮询。这是blog post of how to do it和code example。
因此,实现您提到的内容的方法是通过轮询,并且仅针对新数据的情况提供此优化。
如果有权访问上传网络服务:
对于没有使用服务器socket.io push进行轮询的解决方案,您需要使上载Web服务在同一节点进程中运行,并从Mongo调用io.sockets.emit('yourChannel', newData);
中保存的回调中运行,以广播新的数据到所有浏览器客户端。