【问题标题】:Sails socket listening on range eventsSails 套接字监听范围事件
【发布时间】:2017-04-23 16:33:15
【问题描述】:

我在监听事件时遇到了一个问题,根据 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 坐标范围的地图事件?

【问题讨论】:

    标签: sockets sails.js


    【解决方案1】:

    到目前为止,我自己最好的解决方法是:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-12
      • 2011-02-15
      • 2018-07-15
      • 1970-01-01
      • 1970-01-01
      • 2013-03-29
      • 2017-01-02
      • 1970-01-01
      相关资源
      最近更新 更多