2012-04-12 97 views
0

問題:如何使用iOS XMPPFramework和OpenFire服務器獲得成功的TURN連接。我希望能夠發送和接收文件。使用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:@"[email protected]"]; 

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

然而,當我通過代碼調試,我n TURNSocket我得到一條評論,指出「我們無法從我們的列表中找到一個代理服務器」。這是因爲Array'streamhosts'永遠不會被填充。可能是什麼問題?是否有一些XML可以告訴我這個問題?這個問題可能與OpenFire有關嗎?

回答

0

如果沒有爲TurnSocket.m提供帶資源的完整jID,則會導致問題!這是通過在viewDidLoad中SMChatViewController的

如使用

[email protected]/spark

而不是

[email protected] .co.uk

我對這個項目的進程可以here

+0

嗨安迪,你能告訴我從哪裏獲得資源?資源的價值應該是什麼? – 2013-02-20 12:20:01

-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)

更新20一個新的錯誤/ 4/2012:我現在相信這個答案是錯了!如果它工作正常,streamhostUsed會在那裏,而不是streamhost出現錯誤!

+0

我試過這個,但streamhost xml元素永遠不會被填充爲結果,turnocked失敗。 :(我想,streamhost - 用於streamhost永遠不會解決。 – Splendid 2012-04-18 10:04:11

+0

嗯。如果您在此時通過代碼進行調試,則可能會看到流主機已被填充。但是,我目前懷疑我的答案是正確的。我正在通過http://xmpp.org/extensions/xep-0065.html進行閱讀,通過代碼進行調試,以更深入地瞭解正在發生的事情。 – 2012-04-18 10:16:39

+0

我很想知道我什麼時候看到你對這個問題的結果。而不是streamhost,我們不喜歡在代碼日誌中看到streamhost-used xml日誌。我也看到了我們的XML日誌不舒服看起來像轉彎套接字成功 – Splendid 2012-04-19 09:07:21

0

這是TURNSocket的類方法你打電話 填充TURNSocket 流主機的代理人選。所以你應該把streamhost放回到流主機之前的 。

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

[TURNSocket setProxyCandidates:@["host1.somedomain.com", @"host2.someotherdomain.com"]]; 
相關問題