2016-04-12 2 views
1

Я сконфигурировал интеграцию с помощью xmpp и могу отправить сообщение другому jid. Для создания сообщения, я использую следующий метод:Spring Integration Xmpp 4 - Отправить создать запрос muc

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(); 
     } 

Я получаю ошибку феллинг:

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 предназначен только для отправки сообщений.

Управление многопользовательским чатом (создание, подключение, выход и т. Д.) Должно выполняться через org.jivesoftware.smackx.muc.MultiUserChatManager.

Хотя вы можете отправить сообщение там с помощью ChatMessageSendingMessageHandler:

  • Заголовок XmppHeaders.TO должен быть room имя в соответствии с 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) { 
    
  • И заголовок XmppHeaders.TYPE должен быть как значение Message.Type.groupchat

+0

спасибо, если я использую MultiUserChatManager, я должен передать ему свой компонент XMPPConnection? Кстати, я использую последнюю версию spring-integration-xmpp (4.2.5) и зависит от версии smack, которая не содержит MultiUserChatManager. –

+0

Да ... Понятно. Похоже, что он был введен с «Smack 4.1.x». Мы поддерживаем это, поскольку SI-4.3. Я думаю, вы можете сделать то же самое через «MultiUserChat»: «public MultiUserChat (соединение XMPPConnection, String room)». –

+0

Но с помощью MultiUserChat я больше не буду использовать канал, просто xmppconnection, не так ли? Я хотел бы использовать канал и просто отправить минимальную информацию на мой сервер xmpp, чтобы создать комнату. –