【发布时间】:2020-03-28 22:09:38
【问题描述】:
我正在尝试为我的应用设置聊天功能,我想知道最好的方法。
这是我目前的设想:
用户决定并选择他想与谁通信,然后他记录一个音频消息,该消息保存为文件并将其发送到 websocket。
由于 Socket.IO 的 android 实现不包括 .to(socketId) 方法,我需要在 JSON 中传递消息的预期接收者的 ID(以及一些其他消息相关数据),然后服务器可以阅读以便使用适当的.to(socketId) 调用发出消息。由于我想发送文本和音频,我将音频文件转换为byte[] byteArrayOfAudio,然后使用new String(byteArrayOfAudio) 将其转换为字符串。然后我将这个字符串添加到 JSON 中,并将实际文本发送到 websocket。
服务器读取消息并找到与接收者的用户ID匹配的连接ID(socketId)。然后将消息转发给适当的接收者。接收方解码 json 得到音频字符串,将其转换为 byte[],然后将其转换回适当的音频格式,然后接收方就可以播放了。
我的问题是:
这是最佳做法吗?
有没有办法直接从android 告诉服务器消息要转发到哪个socketId?服务器是否需要不断读取 50 000 个字符的 JSON 对象来获取接收者 ID,这是否存在潜在的高成本处理开销?
我知道对文件进行字符串化会增加其大小,有没有更好的方法呢?
音频文件相当小(最大 50kb),如果收益不显着,我希望将音频文件和相关文本数据集中发送.emit()
任何有用的信息将不胜感激
【问题讨论】:
标签: android json performance audio socket.io