【问题标题】:XMPP 1 to 1 chat query?XMPP 1 对 1 聊天查询?
【发布时间】:2011-08-16 14:06:26
【问题描述】:

我正在使用 Openfire 开发一个聊天项目。

我已经完成了群聊。

但在一对一的聊天中会感到困惑。

我正在使用:

<message from='user2@server/user2' to='user1@server/user1' type='chat'>

<body>TEST< /body>

</message>

但它不发送它。

提前致谢。

【问题讨论】:

  • &lt; 字符后面真的没有空格吗?
  • 我假设 OP 使用了空格,所以标签会显示出来;我已将它们包含在代码块中。
  • 为什么在“to”jid 中使用资源?尝试只为="user1@server"
  • 为什么在“to”jid 中使用资源?尝试只为="user1@server"

标签: iphone objective-c xmpp chat


【解决方案1】:

假设&lt; 字符后面的空格不应该存在,它看起来是正确的。

您甚至可以不使用from 属性,因为它将由服务器添加。

【讨论】:

    【解决方案2】:
    - (AppDelegate *)appDelegate
    {
        return (AppDelegate *)[[UIApplication sharedApplication] delegate];
    }
    - (XMPPStream *)xmppStream
    {
        return [[self appDelegate] xmppStream];
    }
    
     - (void)sendMessage:(id)sender
    {   
    
        NSString *messageStr =messageField.text;
        if([messageStr length] > 0)
        {
    
             NSXMLElement *body = [NSXMLElement elementWithName:@"body"];
            [body setStringValue:messageStr];
             NSXMLElement *message = [NSXMLElement elementWithName:@"message"];
            [message addAttributeWithName:@"type" stringValue:@"chat"];
            [message addAttributeWithName:@"to" stringValue:@"destination email address"];
            [message addChild:body];
             NSLog(@"%@",message);
    
            [[self xmppStream] sendElement:message];
        }
    }
    

    当您单击发送按钮时,将调用此方法并将日志消息显示为

    <message type="chat" to="destination email address"><body>messageStr</body></message>
    

    【讨论】:

      【解决方案3】:

      修复语法问题、删除from 地址并从to 地址中删除可疑资源后,您将得到:

      <message to='user1@server' type='chat'>
        <body>TEST</body>
      </message>
      

      to 地址上的资源就是问题所在。阅读XEP-0296,了解在做 XMPP IM 时如何正确处理资源。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多