Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 发送大尺寸图像、视频和音频时断开XMPP客户端的连接_Ios_Video_Xmpp_File Transfer_Xmppframework - Fatal编程技术网

Ios 发送大尺寸图像、视频和音频时断开XMPP客户端的连接

Ios 发送大尺寸图像、视频和音频时断开XMPP客户端的连接,ios,video,xmpp,file-transfer,xmppframework,Ios,Video,Xmpp,File Transfer,Xmppframework,我已经使用robbiehanson xmpp示例实现了xmpp。我可以聊天,也可以发送图像。我正在发送的图像将转换为nsdata,并进一步转换为Base64String,然后使用 [self.xmppStream sendElement:message] 这样,如果图像的大小很小,我可以立即发送,但如果图像的大小较大,两个xmpp用户就会断开连接,文件不会传输。同样的事情也发生在视频和音频上。虽然我可以使用 UIImageJPEGRepresentation(image,0.005); 但是如

我已经使用robbiehanson xmpp示例实现了xmpp。我可以聊天,也可以发送图像。我正在发送的图像将转换为nsdata,并进一步转换为Base64String,然后使用

[self.xmppStream sendElement:message]

这样,如果图像的大小很小,我可以立即发送,但如果图像的大小较大,两个xmpp用户就会断开连接,文件不会传输。同样的事情也发生在视频和音频上。虽然我可以使用

UIImageJPEGRepresentation(image,0.005);
但是如何发送视频和音频的大小显然会很大。我已经阅读了关于XEP-0065和XEP-0096的文档,但无法以正确的方式实现它。请让我知道为什么用户会断开连接,为什么我无法使用base64传输繁重的文件,并共享有助于我传输视频和音频的代码


非常感谢您的帮助。

虽然XMPP允许传输少量二进制数据,但建议“带外”共享大文件或视频/音频流,并使用XMPP as-您只需发送http://或rtp://链接,您好友的客户端将下载该链接,或从给定流开始播放音频/视频。您可以以任何形式发送该链接,但有一些“草稿标准”XMPP扩展,允许与现有客户端兼容:

  • -简单的扩展,您只需将URL附加到标准
    元素
  • 和-这些是“元”规范,描述客户端如何“协商”其支持的功能、选择共享数据的方式(、等)、查找打开的TCP端口或中介代理、NAT遍历等

  • 因此,如果您只想共享文件,请通过任何现有的文件共享服务共享文件,并按照第一个XEP中所述发送URL。如果您想构建大型服务或VOIP应用程序,请使用SI或Kingle。但是没有人阻止您创建自己的XMPP扩展,这可能更容易实现。是一个定制的XMPP扩展,它不是由XMPP社区开发的,但被XSF作为实验性的接受,您也可以检查它。

    虽然XMPP允许传输少量二进制数据,但建议“带外”共享大文件或视频/音频流,并使用XMPP作为-您只需发送http://或rtp://链接,您好友的客户端将下载它,或从给定流开始播放音频/视频。您可以以任何形式发送该链接,但有一些“草稿标准”XMPP扩展,允许与现有客户端兼容:

  • -简单的扩展,您只需将URL附加到标准
    元素
  • 和-这些是“元”规范,描述客户端如何“协商”其支持的功能、选择共享数据的方式(、等)、查找打开的TCP端口或中介代理、NAT遍历等

  • 因此,如果您只想共享文件,请通过任何现有的文件共享服务共享文件,并按照第一个XEP中所述发送URL。如果您想构建大型服务或VOIP应用程序,请使用SI或Kingle。但是没有人阻止您创建自己的XMPP扩展,这可能更容易实现。是一个定制的XMPP扩展,它不是由XMPP社区开发的,但被XSF接受为实验性的,您也可以检查它。

    即使我没有直接将图像发送到XMPP,因为它需要很多时间

    在我的项目中,我的消息可以是字符串,也可以是图像,我发现只有一种方法可以发送消息,即

    [xmppRoom sendMessageWithBody:@"Your msg"];
    
    因此,对于首先发送图像,我将其转换为base64,然后将其上载到我的服务器,并从服务器获取该图像的URL。一旦我们得到这个URL,就用上面的方法传递这个URL

    我面临的问题是如何将普通消息和URL(图像)分开

    因此,对于发送普通文本,我直接将其发送到函数上方,但对于发送URL,我发送nsdictionary,即,我将nsdictionary转换为字符串,并将其发送到函数上方

    NSDictionary *dict = @{@"type":@"image",
                                   @"url":@"Url of your image"};
    
                NSString *newMessage = [NSString stringWithFormat:@"%@",dict];
    
                [appDelegate.xmppRoom sendMessageWithBody:newMessage];
    
    用于隔离中的正常消息和图像-

    - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message
    {
    
        messages *msg = [messages new];
    
         NSDictionary *dictOfMedia = [NSPropertyListSerialization
                                     propertyListWithData:[[[message elementForName:@"body"] stringValue] dataUsingEncoding:NSUTF8StringEncoding]
                                     options:kNilOptions
                                     format:NULL
                                     error:NULL];
    
        if ([dictOfMedia objectForKey:@"type"])
        {
            msg.mediaType = [dictOfMedia objectForKey:@"type"];
            msg.url = [dictOfMedia objectForKey:@"url"];
        }
        else
        {
            msg.msg = [[message elementForName:@"body"] stringValue];
        }
    
    
    }
    
    messages是我的模型类,您可以简单地使用nsstring进行测试

    在此之后,只需使用任何开源项目下载图像或自己执行延迟加载


    希望这能帮助您:)

    即使我没有将图像直接发送到xmpp,因为这需要很多时间

    在我的项目中,我的消息可以是字符串,也可以是图像,我发现只有一种方法可以发送消息,即

    [xmppRoom sendMessageWithBody:@"Your msg"];
    
    因此,对于首先发送图像,我将其转换为base64,然后将其上载到我的服务器,并从服务器获取该图像的URL。一旦我们得到这个URL,就用上面的方法传递这个URL

    我面临的问题是如何将普通消息和URL(图像)分开

    因此,对于发送普通文本,我直接将其发送到函数上方,但对于发送URL,我发送nsdictionary,即,我将nsdictionary转换为字符串,并将其发送到函数上方

    NSDictionary *dict = @{@"type":@"image",
                                   @"url":@"Url of your image"};
    
                NSString *newMessage = [NSString stringWithFormat:@"%@",dict];
    
                [appDelegate.xmppRoom sendMessageWithBody:newMessage];
    
    用于隔离中的正常消息和图像-

    - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message
    {
    
        messages *msg = [messages new];
    
         NSDictionary *dictOfMedia = [NSPropertyListSerialization
                                     propertyListWithData:[[[message elementForName:@"body"] stringValue] dataUsingEncoding:NSUTF8StringEncoding]
                                     options:kNilOptions
                                     format:NULL
                                     error:NULL];
    
        if ([dictOfMedia objectForKey:@"type"])
        {
            msg.mediaType = [dictOfMedia objectForKey:@"type"];
            msg.url = [dictOfMedia objectForKey:@"url"];
        }
        else
        {
            msg.msg = [[message elementForName:@"body"] stringValue];
        }
    
    
    }
    
    messages是我的模型类,您可以简单地使用nsstring进行测试

    在此之后,只需使用任何开源项目下载图像或自己执行延迟加载


    希望这能帮助您:)

    给我一个在xmpp中发送和接收音频和视频等文件的示例代码。尝试搜索很多东西但无法排序Hello vitalyster你能提供发送和接收文件的示例代码吗?我有太多的google,但找不到正确的东西。有没有人有发送或接收文件的示例代码?我面临503服务不可用的问题。如果您可以共享代码,那将非常有帮助。请给我一个在xmpp中发送和接收音频和视频等文件的示例代码。尝试搜索很多东西,但无法将其排序Hello vitalyster可以