2016-04-12 12 views
1

私はxmppとspring integrationを設定しました。私は他のjidにメッセージを送ることができます。私は次のメソッドを使用したメッセージ構築するには :Spring Integration Xmpp 4 - create muc requestを送信する

Message<?> message = MessageBuilder.withPayload("Test Message"). 
     setHeader(XmppHeaders.TO, "[email protected]"). 
     build(); 
messageChannel.send(message); 

今、私はチャットルームを作成したいと思いますが、私は成功せず、マルチユーザーチャット要求を含むメッセージを構築する方法を考え出してみました。

助けが必要ですか?

使用:XmppHeaders.TYPEセット"groupchat"にとXmppHeaders.TO "をmyroommmm" .. XMPPサーバログに動作しないために: 使用:

[info] <0.609.0>@ejabberd_c2s:open_session:1105 ({socket_state,gen_tcp,#Port<0.16208>,<0.608.0>}) Opened session for [email protected]/resource 2016-04-12 15:55:40.987 [info] <0.609.0>@ejabberd_s2s:new_connection:406 New s2s connection started <0.611.0> 

[info] <0.611.0>@ejabberd_s2s_out:log_s2s_out:1253 Trying to open s2s connection: chiarottos-macbook-pro.local -> myroommmmme with TLS=false 2016-04-12 15:55:40.999 [info] <0.611.0>@ejabberd_s2s_out:open_socket:246 s2s connection: chiarottos-macbook-pro.local -> myroommmmme (remote server not found) 

を私は統合テスト

Upadate 2を実行しています:

MultiUserChat multiUserChat = new MultiUserChat(xmppConnection,"prova"); 
     try { 
      multiUserChat.join("soisdjdsoijds"); 
     } catch (XMPPException.XMPPErrorException e) { 
      e.printStackTrace(); 
     } catch (SmackException e) { 
      e.printStackTrace(); 
     } 

私はfollingエラーを取得します

remote-server-not-found 
    at org.jivesoftware.smack.PacketCollector.nextResultOrThrow(PacketCollector.java:196) 
    at org.jivesoftware.smackx.muc.MultiUserChat.enter(MultiUserChat.java:352) 
    at org.jivesoftware.smackx.muc.MultiUserChat.join(MultiUserChat.java:516) 
    at org.jivesoftware.smackx.muc.MultiUserChat.join(MultiUserChat.java:451) 
    at radiosa.service.muc.MUCService.testRoom(MUCService.java:83) 

(サーバーが正しく設定されていて、それが働いている)

答えて

1

ChatMessageSendingMessageHandlerだけメッセージを送信するために設計されています。

すべてのマルチユーザーチャット管理(creat、join、leaveなど)は、org.jivesoftware.smackx.muc.MultiUserChatManagerで行う必要があります。

あなたはまだChatMessageSendingMessageHandlerを使用してそこにメッセージを送ることができますが:

  • XmppHeaders.TOヘッダはJavadocには、room名でなければなりません:

    * @param jid the name of the room in the form "[email protected]", where "service" is the hostname at which the 
    *  multi-user chat service is running. Make sure to provide a valid JID. 
    */ 
    public synchronized MultiUserChat getMultiUserChat(String jid) { 
    
  • そしてXmppHeaders.TYPEヘッダとしてでなければなりません値はMessage.Type.groupchat

+0

私はMultiUserChatManagerを使用すると、私はそれを私のXMPPConnection beanに渡す必要がありますか?ちなみに私はspring-integration-xmpp(4.2.5)の最新バージョンを使用しています。これはMultiUserChatManagerを含まないsmackバージョンに依存しています。 –

+0

うん...わかります。 'Smack 4.1.x'以降に導入されたようです。私たちはSI-4.3以来それをサポートしています。私はあなたが 'MultiUserChat'を介して同じことをすることができると思います:' public MultiUserChat(XMPPConnection connection、String room) '。 –

+0

しかし、MultiUserChatの使用私はもうチャンネルを使用しません。ちょうどxmppconnectionでしょうか?私はチャンネルを使い、ちょうど私のxmppサーバに最小限の情報を送って部屋を作りたいと思っています。 –

関連する問題