2016-07-14 29 views
0

Rails 5とActionCableを使ってかなり簡単なチャットサービスを手に入れました。これは、ユーザーが部屋のいくつかのうちの1つを選択することができ、それはすべて素晴らしい作品とセットアップにスーパー楽しいでした。ActionCableとジオロケーションサービスを併用する

私が取り組むべき次の問題は、ジオロケーションを使用してXマイル以内のメッセージのみを表示することです。メッセージモデルでは緯度と経度があり、ジオキットとジオコーダーを認識しているので、ユーザーと一定の距離内にメッセージを見つけることができます。私が問題を概念化しているのは、これをActionCableと組み合わせて使用​​することです。アイデアは私の頭の中でとても簡単に聞こえましたが、実装する時間が来たとき、私は優雅にそれを取り除く方法を考えることができません。部屋のメッセージをすべて許可して、クライアントのJavaScript経由でフィルタリングしますか?これは、まったくインターフェイスに到達せずにクライアントにメッセージの束のための種類のハックと帯域幅の浪費のように見えます。残念ながら、これは私が考えることができた唯一の方法です。

+0

@mesages = Message.where(message.distance_to(user.address)

+0

です。これは最近のメッセージの最初のコレクションを取得するのに有効ですが、 ActionCableの放送では、そのメッセージの範囲内にいるユーザーだけにブロードキャストする必要があります。 –

+0

申し訳ありませんが、ActionCableの知識はありませんが、どのユーザーが何を取得するか選択することができます –

答えて

0

私は、国を分割して、ジオロケーションAPIによって返された緯度と経度から計算されたMaidenheadグリッドにActionCableでブロードキャストするために、メイドヘッドグリッドの四角形を使用してこの作業を行うことができました。ユーザーとして、私は彼らが位置していたメイドヘッド・グリッドと隣接するグリッドを聞いて、粗い距離を望む限り彼に申し込んだ。

関連する問題