改善上传头像时间

问题描述 投票:0回答:1

我在用Smack上传头像。它需要很长的时间,而且大部分时间都会超时(有时甚至2分钟都不够)。有什么办法可以改善这个问题吗?有没有其他方法可以快速上传头像?

我知道我可以只让我自己的http服务提供头像,但我现在不愿意走这条路。取VCard头像是非常快的。

我用的是Smack 4.3.0,Smack日志可以在这里找到。https:/pastebin.comdQbSEpmJ。

这是我使用的代码。

fun setPhoto(path: String) = viewModelScope.launch(Dispatchers.IO) {
        try {
            val file = File(path)
            val vCardMgr = VCardManager.getInstanceFor(connection)
            val vCard = vCardMgr.loadVCard()
            vCard.setAvatar(Base64.encodeToString(file.readBytes(), Base64.DEFAULT), FileUtils.getMimeType(path))
            vCardMgr.saveVCard(vCard)
        } catch (e: Exception) {
            launch(Dispatchers.Main){
                Toast.makeText(chatApp.applicationContext, e.message, Toast.LENGTH_LONG).show()
            }
        }
    }
xmpp ejabberd smack
1个回答
0
投票

我发现,用openfire测试,文件大小是如此的bing,这反过来又导致Stanza是如此的hughe,它崩溃的服务器。这是由Guus确认的(Ignite Realtime家伙),这里我引用他的话。

Openfire有一个(可配置的)最大节数限制. 我想它是在2MB。请注意,当你对二进制数据进行base64编码时,编码的结果会比未编码的原始数据大很多。我建议你减少vcard中的图像大小,或者使用其他机制来交换数据。

所以压缩图像解决了这个问题

© www.soinside.com 2019 - 2024. All rights reserved.