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 で「リストから単一のプロキシ サーバーを見つけることができませんでした」というコメントが表示されます。これは、Array 'streamhosts' が読み込まれないためです。問題は何ですか?問題を教えてくれるXMLがどこかにありますか? 問題は OpenFire にある可能性がありますか?

4

3 に答える 3

0

これは、TURNSocket ストリーム ホストのプロキシ候補を設定するために呼び出す TURNSocket のクラス メソッドです。したがって、streamhost を stream-host の前の状態に戻す必要があります。

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

[TURNSocket setProxyCandidates:@["host1.somedomain.com", @"host2.someotherdomain.com"]];
于 2013-03-03T05:01:01.930 に答える
0

この問題は、リソースを含む完全な jID が TurnSocket.m に提供されていない場合に発生します。これは SMChatViewController の viewDidLoad で渡されます

使用例

friendsUsername@beta.myCompany.co.uk/spark

それよりも

friendsUsername@beta.myCompany.co.uk

このプロジェクトの進行状況は、ここでフォローできます

于 2012-04-20T11:42:03.693 に答える
-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 に答える