私は XMPP pubsub を使用しています。すべて正常に動作しています。ユーザーはノードを作成でき、関心のあるユーザーはそのノードをサブスクライブできます。しかし、公開アクションを DB に保存したいと考えています。私のアプリケーションでは、チャット、フィードなどの多くのことが pubsub によって処理されるためです。ページの更新時にチャットを維持したいので、舞台裏でDBに保存するopenfireプラグインを探しています。MUC(マルチユーザーチャット)の場合、openfireがチャットを保存するように、手動でajaxリクエストを送信したくありません。公開アイテムをログに記録する方法はありますか。
アップデート:
フォームの構成に問題があり、デフォルトで項目の永続化が false に設定されていました。そのため、提案どおりにノードを構成しました。しかし、ページの更新で問題が発生しました。例を挙げて説明します。私のアプリケーションでは、ユーザー A がログインしてノードを作成し、作成が成功するとユーザー B に要求を送信します。ユーザー B は、ユーザー A によって作成されたノードにサブスクライブします。ユーザーがページを更新すると、タイプ get の IQ スタンザを送信します。上記のような見逃したイベントをすべて取得しますが、エラー 400 subid-required が発生します。
<body rid='430432056' xmlns='http://jabber.org/protocol/httpbind' sid='dca8aafc'><iq to='pubsub.abc' type='get' xmlns='jabber:client' id='3408:sendIQ'><pubsub xmlns='http://jabber.org/protocol/pubsub'><items node='3821poU5zq7nhn1'/></pubsub></iq></body>
それに応じて、私は得ています:
<body xmlns='http://jabber.org/protocol/httpbind'><iq type="error" id="3408:sendIQ" from="pubsub.abc" to="test@abc/dca8aafc"><pubsub xmlns="http://jabber.org/protocol/pubsub"><items node="3821poU5zq7nhn1"/></pubsub><error code="400" type="modify"><bad-request xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/><subid-required xmlns="http://jabber.org/protocol/pubsub#errors"/></error></iq></body>
だから、私が間違っているところを助けることができます。 node がサブスクリプション ID を指定していない場合、サービスはサブスクライバーにエラーを返す必要があります。つまり、同じノードに再度サブスクライブしていることを意味しますか? それが事実かどうかを確認しましたが、購読は1回だけです。そのため、どこが間違っているのかを把握しています.