2017-04-23 58 views
0

我有一个sails套接字聆听事件的问题,基于x,y坐标的范围。航行插座聆听范围事件

我的风帆服务器端是基本的,默认情况下:没有描述索引操作,因为蓝图是不可思议的。我的自定义路由和控制器的动作里面,之后我更新MapEvent模式,只需要调用

Mapevents.publishCreate(MapEvent);

客户看起来是这样的:

var db_query = { 
    "x": {"greaterThanOrEqual": 55}, 
    "x": {"lessThanOrEqual": 75}, 
    "y": {"greaterThanOrEqual": 25}, 
    "y": {"lessThanOrEqual": 45}, 
}; 

io.socket.get('/mapevents?limit=10000&where=' + JSON.stringify(db_query), function(events) { 
    console.log(events) // all is ok, i get results of this range 
}); 

io.socket.on('mapevents', function(event){ 
    console.log(event); // bad, i get results of everything 
}); 

我怎样才能为x/y坐标mapevents范围?

回答

0

到目前为止,我自己最好的办法来解决这个问题是:

对于数据库中的每个用户我会添加x_from,x_to,y_from,y_to。 每个用户更改其视图后,我将用用户视图范围更新数据库。所以,在用户将屏幕拖动到左边之后,他看到了另一个坐标范围。

然后每个用户都会在自己的“user_id”套接字空间上侦听,例如“1”。

并且在任何MapEvent更新后的node.js服务器端,MapEvent x,y坐标变化(或不)。然后我将获取所有屏幕介于这些坐标之间的用户。所以我会得到像3个用户正在观看这个MapEvent被更改的区域。

因此,在服务器端,我将调用MapEvent.publishCreate为所有3个房间与这些user_ids观察x,y区域。