あり、正確にこれを行うには、既存の標準はありませんが、XEP-0060は、これを実現するために拡張することができます。
私が開発したシステムでは、ノード内のポイント+半径にサブスクライブすることができました。そしてIはサブスクリプション・オプション内の領域に応じて通知をフィルタするためのpubsubサービスをカスタマイズし
<iq type='set'
from='[email protected]/barracks'
to='pubsub.shakespeare.lit'
id='sub1'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<subscribe node='princely_musings' jid='[email protected]'/>
<options>
<x xmlns='jabber:x:data' type='submit'>
<field var='FORM_TYPE' type='hidden'>
<value>http://jabber.org/protocol/pubsub#subscribe_options</value>
</field>
<field var='location#latitude'><value>52.231</value></field>
<field var='location#longitude'><value>-1.49</value></field>
<field var='location#radius'><value>10</value></field>
</x>
</options>
</pubsub>
</iq>
:これは、以下のような、subscription optionsを介して達成されます。アイテムが移動する場所が実際に複雑になるだけで、クライアントに以前にパブリッシュされたアイテムがそのサブスクリプションエリアの範囲外になると、引き込みをエミュレートする必要があります。
残念ながら、Prosodyのためのものではありますが、私は選択肢ではないため、コードを公開することはできません。あなたはejabberdソリューションを探しているようです。私が上で説明した原理は私にとってうまくいきますので、私はそれを少なくともテンプレートソリューションとして提案します。
返信いただきありがとうございます!私はちょっと混乱しています。書き込んだiqスタンザは、ノードに参加する要求です。私の場合、アリスはノードの作成者であり、サブスクライブされたエンティティは彼女を囲むエンティティになります。これらは全て、エンドユーザの介入なしに起こらなければならない。だから、あなたはアリスのクライアントがポイント+半径ノードを作成し、サーバー側ではノード作成を傍受し、近くのすべてのエンティティを自動的にサブスクリプションすることを意味します。このオフコースでは、私のXMPPサーバー内で空間データベースのクエリを実行する必要があります。 – user1063503
ああ、あなたのケースは私のものとは少し異なります。場所を持つアイテム(例えば私の例のようなもの)ではなく、場所を持つノード*が必要です。また、加入者が現在のポイントから一定の距離内にあるノードに自動的に加入することができます。正しい? – MattJ
はい。そのとおりです。 – user1063503