我正在开发一个聊天应用程序,我在其中设置了我的xmppHostName-'myserver'和服务器端口-5222。首先,我通过我的应用程序在xmpp上创建了一个用户,它在xmpp上注册但是出现了身份验证错误(尽管我的用户ID和密码都相同)。然后我通过使用以下方法解决了这个身份验证问题 -
NSError *authenticateError = nil;
XMPPPlainAuthentication *plainAuth = [[XMPPPlainAuthentication alloc] initWithStream:self.xmppStream password:password];
if (![_xmppStream authenticate:plainAuth error:&authenticateError]) {
NSLog(@"Authentication errorrrr: %@", authenticateError.localizedDescription);
}
并且验证错误消失了,我的用户在线,但当我尝试发送任何消息时,服务器通过其他人回复错误:
<message xmlns="jabber:client" id="ACC2AAA6-42CE-4590-95A0-C4B28BE9BF04" to="97@otherserver/4ywme5xjh0" from="62@myserver" type="error"><error code="404" type="cancel"><remote-server-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></message>
其中,97是我的用户ID,62是前端用户ID。下面是我发送xmpp消息的代码:
NSXMLElement *body = [NSXMLElement elementWithName:@"body"];
[body setStringValue:messageBody];
NSXMLElement *subject = [NSXMLElement elementWithName:@"subject"];
[subject setStringValue:subjectName];
[message addAttributeWithName:@"to" stringValue:[user stringByAppendingString:myserver]];
[message addChild:body];
[message addChild:subject];
[self.xmppStream sendElement:message];
这里,'myserver'是我服务器的主机名,服务器从另一台服务器'otherserver'回复。我确信我没有在我的应用程序中的任何地方设置这个'otherserver',那么它如何通过它回复呢?