我喜欢为基于地理的多人游戏构建后端。经过长时间的研究,我发现NodeJS和MongoDB是最好的方法(因为MongoDBs 2d索引可能性和geoJson支持)。
我需要的基本功能是用户可以在他们的移动应用上(在地图上)看到对方。为了避免轮询数据库,我决定使用websockets将用户的当前位置发送到服务器。 但是,问题是反过来:如何确定数据库中用户的位置何时发生变化?轮询(例如每5秒)这里是一个适当的解决方案吗?例如:
db.places.find(
{
location:
{ $near :
{
$geometry: { type: "Point", coordinates: [ -73.9667, 40.78 ] },
$minDistance: 1000,
$maxDistance: 5000
}
}
}
)
或者当我尝试将所有活动用户的位置数据存储在RAM中时,该应用无法扩展到多个节点实例,对吧?