iPhone Jabber / XMPP客户端...“TURN连接失败”

我正在尝试构建一个简单的Jabber客户端。 我已经下载了这个示例项目,它使用xmpp-framework https://github.com/funkyboy/Building-a-Jabber-client-for-iOS我正在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仅适用于媒体流。 只需使用XMPPFramework。 有一些很好的入门指南。

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

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来制作您要发送的协议。

链接地址: http://www.djcxy.com/p/94143.html

上一篇: iPhone Jabber/XMPP client... "TURN Connection failed"

下一篇: How to secure a password from being readable at the client?