0

Openfire サーバーをセットアップしましたが、私の Android クライアントは、アバターを公開できないことを除いて、それでうまく動作します。問題は、サーバーが単に公開アバター iq パケットを無視し、エラーもログ ファイルにも何もないことです。私は標準の XMPP pep avatar stanza を使用しています。

返信ありがとうございます。問題は、標準の XEP 0084 スタンザをうまく解析しない openfire サーバー 3.10 にあることがわかりました。実際、ログとサーバーがクラッシュしていることがわかったので、IQ を として変更しました。たとえば、これは標準である必要があります。アバター公開のIQ

<iq type='set' from='juliet@capulet.lit/chamber' id='publish1'>
  <pubsub xmlns='http://jabber.org/protocol/pubsub'>
    <publish node='urn:xmpp:avatar:data'>
      <item id='111f4b3c50d7b0df729d299bc6f8e9ef9066971f'>
        <data xmlns='urn:xmpp:avatar:data'>
          qANQR1DBwU4DX7jmYZnncm...
        </data>
      </item>
    </publish>
  </pubsub>
</iq>

しかし、ご覧のとおり、標準の IQ には "to" アドレスがありません。openfire サーバーは DB に pubsub ノードを作成してクラッシュし、ユーザーにメタデータを公開するように求める結果として応答しませんでした。このパケット、次に標準のメタデータ パケットを送信しますが、メタデータ通知が初めてサーバーに送信される標準のメタ データとして成功した結果として、サーバーから返信される「宛先」アドレスを含むメタ データ パケットを再度送信します。

<iq type='set' from='juliet@capulet.lit/chamber' id='publish2'>
      <pubsub xmlns='http://jabber.org/protocol/pubsub'>
        <publish node='urn:xmpp:avatar:metadata'>
          <item id='111f4b3c50d7b0df729d299bc6f8e9ef9066971f'>
            <metadata xmlns='urn:xmpp:avatar:metadata'>
              <info bytes='12345'
                    id='111f4b3c50d7b0df729d299bc6f8e9ef9066971f'
                    height='64'
                    type='image/png'
                    width='64'/>
            </metadata>
          </item>
        </publish>
      </pubsub>
    </iq>

そして、このように「to」アドレスを追加して

<iq type='set' from='juliet@capulet.lit/chamber' to="mydomain.com" id='publish2'>
  <pubsub xmlns='http://jabber.org/protocol/pubsub'>
    <publish node='urn:xmpp:avatar:metadata'>
      <item id='111f4b3c50d7b0df729d299bc6f8e9ef9066971f'>
        <metadata xmlns='urn:xmpp:avatar:metadata'>
          <info bytes='12345'
                id='111f4b3c50d7b0df729d299bc6f8e9ef9066971f'
                height='64'
                type='image/png'
                width='64'/>
        </metadata>
      </item>
    </publish>
  </pubsub>
</iq>

上記の方法でアバターの公開が機能しており、他のユーザーにも通知を正常に発行しています

そして、ここにサーバークラッシュログがあります

2016.03.02 10:41:02 ERROR [socket_c2s-thread-3]: org.jivesoftware.openfire.handler.IQHandler - Internal server error
java.lang.NullPointerException
    at org.jivesoftware.openfire.pubsub.PubSubEngine.createNodeHelper(PubSubEngine.java:1165)
    at org.jivesoftware.openfire.pubsub.PubSubEngine.publishItemsToNode(PubSubEngine.java:340)
    at org.jivesoftware.openfire.pubsub.PubSubEngine.process(PubSubEngine.java:98)
    at org.jivesoftware.openfire.pep.PEPServiceManager.process(PEPServiceManager.java:215)
    at org.jivesoftware.openfire.pep.IQPEPHandler.handleIQ(IQPEPHandler.java:423)
    at org.jivesoftware.openfire.handler.IQHandler.process(IQHandler.java:66)
    at org.jivesoftware.openfire.IQRouter.handle(IQRouter.java:372)
    at org.jivesoftware.openfire.IQRouter.route(IQRouter.java:115)
    at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:78)
    at org.jivesoftware.openfire.net.StanzaHandler.processIQ(StanzaHandler.java:342)
    at org.jivesoftware.openfire.net.ClientStanzaHandler.processIQ(ClientStanzaHandler.java:99)
    at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:307)
    at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:199)
    at org.jivesoftware.openfire.nio.ConnectionHandler.messageReceived(ConnectionHandler.java:181)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:690)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:765)
    at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:109)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:765)
    at org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutputImpl.flush(ProtocolCodecFilter.java:407)
    at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:236)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:765)
    at org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:74)
    at org.apache.mina.core.session.IoEvent.run(IoEvent.java:63)
    at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTask(OrderedThreadPoolExecutor.java:769)
    at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTasks(OrderedThreadPoolExecutor.java:761)
    at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.run(OrderedThreadPoolExecutor.java:703)
    at java.lang.Thread.run(Unknown Source)
4

0 に答える 0