2016-04-12 11 views
1

Ich konfigurierte Frühjahr Integration mit Xmpp und ich kann eine Nachricht an andere jid senden. Um die Botschaft, die ich die folgende Methode verwenden zu bauen:Spring Integration Xmpp 4 - Senden create muc Anfrage

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

Jetzt würde ich einen Chatraum erstellen möchte, habe ich versucht zu dachte, wie eine Nachricht zum Aufbau einer Multi-User-Chat-Anfrage ohne Erfolg enthalten.

Irgendwelche Hilfe?

mit: XmppHeaders.TYPE Set "groupchat" und XmppHeaders.TO zu "myroommmm" funktioniert nicht .. Der xmpp Server Log:

[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) 

Ich bin mit einen Integrationstest

Upadate 2: Verwendung:

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

ich erhalte die Folling Fehler:

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) 

(Der Server richtig konfiguriert ist und es funktioniert)

Antwort

1

Die ChatMessageSendingMessageHandler ist nur für das Senden von Nachrichten.

Alle Multi-User-Chat-Management (creat, verbinden, lassen usw.) müssen über org.jivesoftware.smackx.muc.MultiUserChatManager erfolgen.

Auch wenn Sie noch Nachricht dort ChatMessageSendingMessageHandler mit schicken:

  • Der XmppHeaders.TO Header muss ein room Name sein nach dem JavaDocs:

    * @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) { 
    
  • Und die XmppHeaders.TYPE Header als sein muss Wert von Message.Type.groupchat

+0

Danke, wenn ich MultiUserChatManager verwende, muss ich meine XMPPConnection Bean übergeben? Übrigens verwende ich die neueste Version von Spring-Integration-Xmpp (4.2.5) und es hängt von einer Smack-Version ab, die MultiUserChatManager nicht enthält. –

+0

Yeah ... Ich verstehe. Sieht so aus, als wäre es seit 'Smack 4.1.x' eingeführt worden. Wir unterstützen das seit SI-4.3. Ich denke, Sie können dasselbe tun, nur über 'MultiUserChat':' public MultiUserChat (XMPPConnection Verbindung, String room) '. –

+0

Aber mit MultiUserChat würde ich keinen Kanal mehr verwenden, nur xmppconnection, oder? Ich möchte Kanal benutzen und nur minimale Informationen zu meinem xmpp-Server senden, um den Raum zu schaffen. –