- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 Openfire 服务器 (3.7.1) 进行 XMPP 身份验证、消息传递和文件传输。我正在使用 iOS 的 XMPPFramework 与其通信。
我已成功建立身份验证、发送和接收状态、发送和接收消息。但是,当我尝试使用文件传输时,我无法完成。
请看下面我的代码。
对于发件人:
NSArray *proxyList = [NSArray arrayWithObjects:self.hostname,nil];
[TURNSocket setProxyCandidates:proxyList];
TURNSocket *fileTransferSocket = [[TURNSocket alloc] initWithStream:self.xmppStream toJID:userJid];
if (fileTransferSocket) {
[fileTransferSocket startWithDelegate:self delegateQueue:dispatch_get_main_queue()];
}
对于接收者:
- (BOOL)xmppStream:(XMPPStream*)sender didReceiveIQ:(XMPPIQ *)iq {
if ([TURNSocket isNewStartTURNRequest:iq]) {
TURNSocket *receiverSock = [[TURNSocket alloc] initWithStream:self.xmppStream incomingTURNRequest:iq];
[self.turnSockets addObject:receiverSock];
[receiverSock startWithDelegate:self delegateQueue:dispatch_get_main_queue()];
}
return YES;
}
还实现了 TURNSocket 的委托(delegate)方法:
- (void)turnSocket:(TURNSocket *)sender didSucceed:(GCDAsyncSocket *)socket {
NSLog(@"Socket Suceeed Port For File Transfer: %d",socket.localPort);
if ([self.turnSockets containsObject:sender]) {
NSLog(@"File Transfer Ulastiiiiiiii");
NSUInteger indexOfObj = [self.turnSockets indexOfObject:sender];
[self.turnSockets removeObjectAtIndex:indexOfObj];
}
}
但是当我尝试开始文件传输过程时,我收到这样的错误:
<query xmlns="http://jabber.org/protocol/bytestreams" sid="99DC0DA7-55ED-4A53-9A8F-F65F1706E1B2" mode="tcp">
<streamhost jid="proxy.192.168.12.30" host="192.168.12.30" port="7777"/>
</query>
<error code="503" type="cancel"><service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
</iq>
我不明白这可能是什么问题。
我唯一想到的是我在连接到服务器时没有使用 SSL 身份验证。这可能是原因还是我遗漏了什么?
谢谢。
最佳答案
在 XMPP 中 - 存在委托(delegate)
use : [self from] full], 将用资源填充 JID。
1) [self from]user],只给出用户名@域2) [self from] full],给出完整的JID如下
JID : 用户名@域/资源ID
希望以上信息对您有所帮助
关于ios - XMPPFramework - 不断收到错误代码 503 服务不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8968640/
我正在使用 XMPPFramework在我的 iOS 应用程序中发送和接收客户端和服务器之间的命令消息。服务器会立即响应不同的命令消息。 有时候连接很慢,客户端发来的消息会长时间没有响应。所以我想知道
我正在为 iPhone 开发一款应用程序,其中功能之一是使用 XMPPFramework 的即时消息系统。现在,我正在使用 Google Talk 进行测试。委托(delegate)与管理用户界面的类
我正在 iPhone 上使用 xmppframework。我想知道如何检查我的特定域的所有可用用户? 谢谢 最佳答案 - (void)xmppStream:(XMPPStream *)sender d
问题:我正在使用XMPPFramework和Openfire服务器创建iOS聊天应用程序。但是,我无法连接到服务器。但是,我可以使用GTalk或Facebook帐户登录。此外,我可以使用另一个Jabb
我认为标题足够说明问题,但故事如下: 我是 XMPPFramework 的新手对于 iOS,我想将我的客户端设置为自动接受它收到的任何订阅请求。这样其他客户端可以在请求时看到该客户端的存在状态。 根据
需要帮助以获取有关好友的存在信息的信息。 我正在调用“fetchRoster”函数,但是我正在获取名册列表而不是存在信息。 我也尝试显式调用存在信息。但是在我的 iOS 应用程序中没有调用 didRe
我将openfire用作xmpp服务器,并希望通过Turnsocket传输文件。 openfire(本地)配置: xmpp.auth.anonymous true xmp
我有一个用于一对一聊天的应用程序。现在我需要实现群聊。我知道 XMPPFramework 是可能的,并且有一个名为 XMPPRoom 的类,我们可以使用它来创建房间或加入房间。但是我无法在我的项目中实
有什么方法可以让我查询例如 muc 房间的列表,但指定某些约束。 我已在每个房间的配置表单中的描述字段下附加了每个房间的位置。我想找出获得用户位置 500m 范围内所有房间的最佳方法是什么。 在后端,
如何使用 XMPPFramework 在 iPhone 中实现 GroupChat。我尝试了休闲代码,但未创建房间。我如何知道房间是否已创建。XMPPRoomDelegate 未被调用。当 Strea
我在 Openfire 服务器上创建了一个组和两个用户。我能够使用 XMPPFramework 对两个用户进行身份验证,但无法在他们之间交换消息。我可以看到两个用户都加入了 Openfire 服务器上
为了更改我的登录状态,我使用了以下代码: XMPPPresence *presence = [XMPPPresence presenceWithType:@"away"]; [[sel
这个问题在这里已经有了答案: XMPPFramework - How to create a MUC room and invite users? (3 个答案) 关闭 8 年前。 我需要使用 XM
我的 xmpp 流连接成功,在回调中我尝试发送用户的存在。但是,我不断收到此错误:Error Domain=XMPPStreamErrorDomain Code=1“操作无法完成。(XMPPStrea
我从 Google Talk 帐户接收消息,它们显示在 Ios 模拟器的表格 View 中,但是当我发送消息时,它不会显示在 Google Talk 客户端(在另一台计算机上)中。这是代码: -(IB
我正在尝试将用户状态设置为离开(或目前的任何状态)。我正在使用以下代码,但它似乎没有做任何事情。 XMPPPresence *presence = [XMPPPresence presence]; N
我是 iOS 的新手。我正在使用 XMPPFramework 构建应用程序。但是最近几天我遇到了一个问题。找不到任何解决方案。问题是当我想向任何特定的 id 发送消息时,消息没有被发送。发送消息的 A
如何在 iOS 中使用 XMPPFramework 获取在线和离线好友列表? 我想向用户发送好友请求。那么我该如何实现呢?有人可以为我分享一些示例代码吗? 谢谢。 最佳答案 通过使用这些方法,您将收到
我正在使用 https://github.com/robbiehanson/XMPPFramework对于我的 iOS 聊天应用程序。 我需要帮助来删除注册用户帐户。 请帮帮我。 最佳答案 如 the
我已经使用 XMPP 协议(protocol)进行了一对一聊天。现在,我想在我的应用程序中发送图像和视频。我研究了文件传输,但没有找到解决方案。我还使用了下面的代码进行 Socket 连接。 请告诉我
我是一名优秀的程序员,十分优秀!