Android WebRTC Получение JSON из JavaScript-браузера PeerJS

Мое приложение использует WebRTC для связи с браузером, использующим Chrome (PeerJS), фактически несколько браузеров. Поэтому всякий раз, когда я создаю блок в браузере, одноранговые узлы должны передавать друг другу информацию об этом браузере, насколько я знаю, это должен быть JSON. Дело в том, что я не могу правильно отформатировать его, в сообщении, которое я получаю, всегда есть перепутанные символы, даже если информация, подобная предыдущему блоку, верна. Я просто чувствую, что этого не должно происходить.

Я пытаюсь понять, что происходит, я чувствую, что PeerJS делает что-то большее, чем просто отправка чистого JSON. Когда мое приложение связывается через WebSockets для предложения / ответа / кандидата, все их JSON приходят в нормальное форматирование.

Мой код для onMessage для моего RTC Datachannel:

@Override
        public void onMessage(DataChannel.Buffer buffer) {

            Charset utf8 = Charset.forName("UTF-8");
            ByteBuffer byteBuffer = buffer.data;
            CharBuffer charBuffer = utf8.decode(byteBuffer);
            Log.d(TAG, "onMessage: " + byteBuffer.toString());
            Log.d(TAG, "onMessage: " + charBuffer.toString());

        }

Сообщения, которые я получаю от браузеров:

��typem�data��type�block��header��index�timestamp�����d�o���previousHash���@0ff530e5a7f0f7d88189e1a87c380cbe0a1a5de9a904278c4831592b0bfd7017�hash���@0d15980b550ce37fe347d08d27e7806980aa8fb65663e667c9c6630de7d69e8e�data��type�ART�timestamp�����d�o���contexthash���@a46887f22840ca5e7ac2368e1c090b3feab8f238788be71864831b48cac45a8f���requestingAcessPKey���VbBtHUR-LkiTMYpxrcF9MofNFa_fgHWLTQkpfSEvo1nksRmsUBiiG7k9eNbOjZ4IDPp61IO4BnA7hz4JiahslxM�signedMsg����0645fc574d2a2ea04018baf91f3b030dea3a4b66a862ae7ad5d6bd8c9d35ddbd18f49b853d75fd7578361046e28104bc6565c2aeb7df7aa7ea120851ea4b6fbf

Также сообщение в двоичном формате.

1 ответ

Решение

Отвечая на мой собственный вопрос. Проблема заключалась в том, что PeerJS использует библиотеку JS-двоичной сериализации, для ее десериализации мне нужно было записать эту библиотеку в код Java.

С сырым Android / Java не было никакого способа сделать это.

Библиотека JS называется binarypackJS.

(Также стоит отметить, что вы можете использовать JSON для связи с peerJS, все, что вам нужно сделать, это включить тип msg как "json", а не "двоичный").

Другие вопросы по тегам