Flutter - Dart Socket 读取一半消息

Flutter - Dart Socket reads half message

我正在开发一个 Flutter 应用程序,它从 Scala 服务器接收 JSON 格式的数据。
一切正常,但有时我收到一条不完整的消息。

我正在使用 Streambuilder 来处理这个过程,代码如下:

return StreamBuilder(
      stream: Utils.socket,
      builder: (_, snapshot) {
        if (snapshot.connectionState == ConnectionState.waiting) {
          return Scaffold(
            body: Center(
              child: AdaptiveSpinner(
                withMessage: 'Connecting to game server',
              ),
            ),
          );
        }

        if (snapshot.error != null) {
          return NetworkErrorScreen();
        }

        final message = String.fromCharCodes(snapshot.data);
[...]
);

在正常情况下,String.fromCharCodes(snapshot.data); 会给我一个有效的 JSON,然后我会对其进行解析,等等...但有时 json 不完整(套接字只读取它的一部分,从头开始直到一个未定义的点,或者从一个未定义的点开始到同一个json).

的结尾

关于如何解决这个问题有什么想法吗?可能与缓冲区大小问题有关?请帮忙!

我们终于设法解决了这个问题。 我们不知道为什么,但由于服务器返回格式正确的 json(带有换行符和制表符),这有时会导致问题出现错误。 一旦我们没有在服务器中格式化 json,将其作为纯字符串返回,错误就自行消失了...... 这对我来说是一个谜,如果有人有解释,答案被广泛接受为正确答案。谢谢!