Sails套接字监听范围事件

时间:2017-04-23 16:33:16

标签: sockets sails.js

基于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?

1 个答案:

答案 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区域。