我已经使用 robbiehanson xmpp 示例实现了 xmpp。我可以聊天,也可以发送图像。我发送的图像被转换为 nsdata 并进一步转换为 Base64String,然后发送字符串
[self.xmppStream sendElement:message];
这样,如果图像尺寸较小,我可以立即发送该图像,但如果图像尺寸较大,则两个 xmpp 用户会断开连接,并且不会传输文件。视频和音频也会发生同样的情况。虽然我可以使用压缩图像
UIImageJPEGRepresentation(image,0.005);
但如何发送视频和音频,因为尺寸显然会很大。我已阅读有关 XEP - 0065 和 XEP - 0096 的文档,但无法以正确的方式实现它。请让我知道为什么用户会断开连接,为什么我无法使用 base64 传输大文件,并分享可以帮助我传输视频和音频的代码。
非常感谢您的帮助。
虽然 XMPP 允许传输少量二进制数据,但建议“带外”共享大文件或视频/音频流并使用 XMPP信令协议 http://en.wikipedia.org/wiki/Signaling_protocol- 您应该只发送 http:// 或 rtp:// 链接,您好友的客户端就会下载它,或者开始播放给定流中的音频/视频。您可以以任何形式发送该链接,但有一些“标准草案”XMPP 扩展,可以与现有客户端兼容:
-
XEP-0066:带外数据 http://xmpp.org/extensions/xep-0066.html- 简单的扩展,您只需将 URL 附加到标准
<message />
元素。
-
XEP-0095:流启动 http://www.xmpp.org/extensions/xep-0095.html and XEP-0166:叮当声 http://xmpp.org/extensions/xep-0166.html- 这些是“元”规范,描述客户如何“协商”其支持的功能,选择他们喜欢的共享数据的方式(ibb http://www.xmpp.org/extensions/xep-0047.html, oob http://xmpp.org/extensions/xep-0066.html, 字节流 http://www.xmpp.org/extensions/xep-0065.html, 叮当RTP http://xmpp.org/extensions/xep-0167.html等),查找打开的 TCP 端口或中介代理、NAT 遍历等。
因此,如果您只想共享文件 - 通过任何现有的文件共享服务共享它并发送第一个 XEP 中所述的 URL。如果您想构建大型服务或 VOIP 应用程序 - 使用 SI 或 Jingle。但没有人阻止您创建自己的 XMPP 扩展,这可能更容易实现。Here http://xmpp.org/extensions/xep-0327.html是一个自定义的XMPP扩展,它不是由XMPP社区开发的,但被XSF接受为实验性的,你也可以检查它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)