基于x,y坐标的范围,我在风帆套接字监听事件时遇到问题。
我的sails服务器端是基本的,默认情况下:没有描述索引操作,因为蓝图起了作用。在我的自定义路由和控制器操作中,在我更新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 :(得分:0)
到目前为止,我自己最好的解决方法是:
对于数据库中的每个用户,我将添加x_from,x_to,y_from,y_to。 每个用户更改其视图后,我将使用用户视图范围更新数据库。因此,在用户向左拖动屏幕后,他会看到另一个坐标范围。
然后每个用户都会监听自己的“user_id”套接字空间,例如“1”。
在任何MapEvent更新之后的node.js服务器端,MapEvent x,y坐标会改变(或不改变)。然后我将获取所有屏幕位于这些坐标之间的用户。所以我会得到3个用户正在观看MapEvent更改的区域。
因此,在服务器端,我将为所有3个房间调用MapEvent.publishCreate,这些user_id观察到x,y区域。