0

问题:如何使用 iOS XMPPFramework 和 OpenFire 服务器获得成功的 TURN 连接。我希望能够发送和接收文件。

注意:我的代码基础来自以下教程:http: //mobile.tutsplus.com/tutorials/iphone/building-a-jabber-client-for-ios-server-setup/

2012 年 4 月 13 日更新:经过更多研究,我认为我需要在这个问题中显示的真正相关代码是这个......

这是 TURNSocket 尝试连接的地方

XMPPJID *jid = [XMPPJID jidWithString:@"myFriendsUsername@beta.myCompany.co.uk"];

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];

但是,当我通过代码进行调试时,在 TURNSocket 中我得到一条评论,指出“我们无法从我们的列表中找到单个代理服务器”。这是因为数组“streamhosts”永远不会被填充。可能是什么问题?是否有一些 XML 可以告诉我这个问题?问题可能出在 OpenFire 上吗?

4

3 回答 3

0

如果没有向 TurnSocket.m 提供带有资源的完整 jID,则会导致问题!这是在 SMChatViewController 的 viewDidLoad 中传入的

例如使用

朋友用户名@beta.myCompany.co.uk/spark

而不是

朋友用户名@beta.myCompany.co.uk

我在这个项目上的进展可以在这里关注

于 2012-04-20T11:42:03.693 回答
0

这是您调用以填充 TURNSocket 流主机的代理候选者的 TURNSocket 类方法。因此,您应该将流主机恢复为流主机之前的状态。

+ (void)setProxyCandidates:(NSArray *)candidates;

[TURNSocket setProxyCandidates:@["host1.somedomain.com", @"host2.someotherdomain.com"]];
于 2013-03-03T05:01:01.930 回答
-1

在 TurnSocket 的 processRequestResponse.m 中,streamhost 元素的名称不是 OpenFire 给我的。我已经从这里改变了它

NSXMLElement *streamhostUsed = [query elementForName:@"streamhost-used"];

对此

NSXMLElement *streamhostUsed = [query elementForName:@"streamhost"];

但是,我现在有一个新错误,我正在开始一个新问题... OpenFire/XMPP 503 service-unavailable error (XEP-0065 using iOS XMPPFramework)

2012 年 4 月 20 日更新:我现在相信这个答案是错误的!如果它工作正常,streamhostUsed就会出现,而不是streamhost出现错误!

于 2012-04-18T08:29:01.963 回答