【发布时间】:2016-07-14 12:01:27
【问题描述】:
我使用 Rails 5 和 ActionCable 建立了一个相当简单的聊天服务。它允许用户从几个房间中选择一个,一切都很好,而且设置起来非常有趣。
我要解决的下一个问题是使用地理位置仅显示 X 英里内的消息。我在消息模型中有纬度和经度,并且我知道 geokit 和地理编码器,所以我知道我可以在与用户一定距离内找到消息。我在概念化时遇到的问题是将它与 ActionCable 结合使用。这个想法在我脑海中听起来很容易,但到了实施的时候,我想不出如何优雅地实现它。我是否只允许所有房间消息通过并通过客户端上的 JavaScript 过滤它们?这似乎有点 hacky 和浪费带宽,因为一堆消息在没有到达接口的情况下发送给客户端。可悲的是,这是我能想到的唯一方法。
【问题讨论】:
-
你会不会像
@mesages = Message.where(message.distance_to(user.address)<what_ever_distance_you_want)distance_to 这样的消息搜索是地理编码功能 -
这适用于获取最近消息的初始集合,但对于 ActionCable 广播,我只需要向该消息范围内的用户广播。
-
很抱歉不知道 ActionCable,但那里的选择可以反转,您可以选择性地选择哪个用户得到什么
标签: ruby-on-rails geolocation ruby-on-rails-5 actioncable