1

我用 xmpp 配置了 spring 集成,我可以向其他 jid 发送消息。要构建消息,我使用以下方法:

Message<?> message = MessageBuilder.withPayload("Test Message").
        setHeader(XmppHeaders.TO, "pino@chiarottos-macbook-pro.local").
        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 chiarotto@chiarottos-macbook-pro.local/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)

我正在运行集成测试

更新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)

(服务器已正确配置并且正在运行)

4

1 回答 1

1

ChatMessageSendingMessageHandler仅用于发送消息。

所有多用户聊天管理(创建、加入、离开等)都必须通过org.jivesoftware.smackx.muc.MultiUserChatManager.

虽然您仍然可以使用以下方式发送消息ChatMessageSendingMessageHandler

  • XmppHeaders.TO头必须是room符合 JavaDocs 的名称:

    * @param jid the name of the room in the form "roomName@service", 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

于 2016-04-12T13:35:08.807 回答