我的应用程序使用 WebRTC 与使用 Chrome (PeerJS) 的浏览器进行通信,实际上是多个浏览器。因此,每当我在浏览器中创建一个块时,对等点都应该相互传递该浏览器的信息,据我所知它应该是一个 JSON。问题是,我无法以正确的方式格式化它,我收到的消息中总是有乱七八糟的字符,即使像前一个块这样的信息是正确的。我只是觉得这不应该发生。
我试图弄清楚发生了什么,我觉得 PeerJS 正在做的不仅仅是发送纯 JSON。当我的应用程序通过 WebSockets 为 Offer/Answer/Candidate 进行通信时,它们的所有 JSON 都采用正常格式。
我的 RTC 数据通道的 onMessage 代码是:
@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
此外,消息是二进制格式。