Я пытаюсь настроить функцию чата для своего приложения, и мне интересно, как лучше это сделать.
Вот что я представляю себе на данный момент:
пользователь решает и выбирает, с кем он хочет общаться, затем записывает звуковое сообщение, которое сохраняется в виде файла, и отправляет его в веб-сокет.
Поскольку реализация android Socket.IO не включает метод .to(socketId)
, мне нужно передать идентификатор предполагаемого получателя сообщения (вместе с некоторыми другими данными, относящимися к сообщению) внутри JSON, чтобы затем можно было прочитать сервер, чтобы отправить сообщение, используя соответствующий вызов .to(socketId)
. Поскольку я хочу отправить как текст, так и аудио, я конвертирую свой аудиофайл в byte[] byteArrayOfAudio
, а затем использую new String(byteArrayOfAudio)
для преобразования его в строку. Затем я добавляю эту строчку к JSON и к фактическому тексту, который я отправляю в websocket.
сервер читает сообщение и находит идентификатор соединения (socketId), соответствующий идентификатору пользователя получателя. и затем пересылает сообщение соответствующему получателю. приемник декодирует json, получает аудио строку, преобразует ее в байт [], затем преобразует ее обратно в соответствующий аудиоформат, и затем приемник может ее воспроизвести.
Мои вопросы:
это лучшая практика?
есть ли какой-либо способ сообщить серверу напрямую из android, в какой сокетI будет отправлен месседж? Существуют ли какие-либо потенциально дорогостоящие издержки обработки для сервера из-за необходимости постоянно читать, скажем, 50 000 символов JSON объектов только для получения идентификатора получателя?
Я знаю, что приведение в порядок файла увеличивает его размер, есть ли лучший способ сделать это?
аудиофайлы довольно малы (до 50 КБ), и, если выигрыш не значителен, я бы предпочел, чтобы аудиофайл и связанные с ним текстовые данные отправлялись в одном .emit()
любая полезная информация будет принята с благодарностью