Ios iPhone Jabber/XMPP客户端&引用;“转向连接失败”;

Ios iPhone Jabber/XMPP客户端&引用;“转向连接失败”;,ios,xmpp,xmppframework,Ios,Xmpp,Xmppframework,我正在尝试构建一个简单的Jabber客户端。 我已经下载了这个示例项目,它使用xmpp框架 我在iOS模拟器中运行它。我已经在本地安装了Openfire,这样我就可以与登录到iChat的用户进行交互 不幸的是,该应用程序只接收消息。它无法发送消息,并显示错误“TURN Connection failed!” 这是试图连接的代码: - (void)viewDidLoad { [super viewDidLoad]; self.tView.delegate = self;

我正在尝试构建一个简单的Jabber客户端。 我已经下载了这个示例项目,它使用xmpp框架 我在iOS模拟器中运行它。我已经在本地安装了Openfire,这样我就可以与登录到iChat的用户进行交互

不幸的是,该应用程序只接收消息。它无法发送消息,并显示错误“TURN Connection failed!”

这是试图连接的代码:

- (void)viewDidLoad 
{
    [super viewDidLoad];
    self.tView.delegate = self;
    self.tView.dataSource = self;
    [self.tView setSeparatorStyle:UITableViewCellSeparatorStyleNone];

    messages = [[NSMutableArray alloc ] init];

    JabberClientAppDelegate *del = [self appDelegate];
    del._messageDelegate = self;

    [self.messageField becomeFirstResponder];

    XMPPJID *jid = [XMPPJID jidWithString:@"user@server.local"];

    NSLog(@"Attempting TURN connection to %@", jid);

    TURNSocket *turnSocket = [[TURNSocket alloc] initWithStream:[self xmppStream] toJID:jid];

    [turnSockets addObject:turnSocket];

    [turnSocket startWithDelegate:self delegateQueue:dispatch_get_main_queue()];
    [turnSocket release];   
}
这些是成功/失败时调用的方法:

- (void)turnSocket:(TURNSocket *)sender didSucceed:(GCDAsyncSocket *)socket 
{   
    NSLog(@"TURN Connection succeeded!");
    NSLog(@"You now have a socket that you can use to send/receive data to/from the other person.");

    [turnSockets removeObject:sender];
}

- (void)turnSocketDidFail:(TURNSocket *)sender 
{   
    NSLog(@"TURN Connection failed!");
    [turnSockets removeObject:sender];
}
有人能帮忙吗?
谢谢。

没有理由使用TURN发送正常消息。TURN仅适用于媒体流。就用吧。有一些很好的入门指南

接下来,使用这种性质的代码创建和发送节:

XMPPMessage *msg = [XMPPMessage message];
[msg addAttributeWithName:@"type" stringValue:@"chat"];
[msg addAttributeWithName:@"to" stringValue:@"foo@example.com"];
NSXMLElement *body = [NSXMLElement elementWithName:@"body" stringValue:@"Hello"];
[msg addChild:body];
[[self xmppStream] sendElement:msg];

请注意,
msg
只是NSXMLElement的一个子类,因此您可以随意修改XML以制定要发送的协议。

您能指出一些吗?我只找到了关于如何启动连接的文档,而没有找到关于如何发送消息的文档。非常感谢。结果是不需要轮到-错误与无法发送消息无关。我将sendMessage方法移动到应用程序委托,然后。。。它开始工作了。我不知道为什么。但它是有效的。@Joe:-你能给我一些在iOS中集成XMPP的参考资料,任何链接或文档吗?我在这方面运气不好。嗨,乔,你能给我一些在XMPP中发送文件的方法吗?请参阅。从XEP-0096开始: