Как получить полные данные, используя акведук и сокет? - PullRequest
0 голосов
/ 30 января 2019

Мое приложение флаттера подключается к сокету через https, и я использую акведук для получения защищенных данных.данные сокета представляют собой строку полной длины, например:

2_7 # a_b_c_d_e_f_g # h_i_j_k_l_m_n #

Я преобразую данные в json, и мои данные json выглядят следующим образом: "{data: 2_7 # a_b_c_d_e_f_g_h_h_h_h_h_g#} "

и отправлено в приложение флаттера.2_7 # означает, что у меня есть 2 строки и 7 столбцов.Исходные данные сокета сервера 152_7 #, что означает, что у меня 152 строки с 7 столбцами.

когда я пытаюсь получить эти данные (152_7 #) с помощью сокета в акведуке, я получаю только 12 строк, а иногда и 25 строк.

Если данные сервера короткие, я получаю все из них, но могуполучить большие строковые данные.

мой вопрос, как получить полные данные, используя акведук и сокет?

import 'package:aqueduct/aqueduct.dart';
import 'package:ntmsapi/ntmsapi.dart';

Socket socket;
String _reply;
var _secureResponse;
var _errorData;

class NtmsApiController extends Controller {

  @override
  Future<RequestOrResponse> handle(Request request) async {
    try {
      String _xRequestValue = "";
      _reply = "";
      _errorData = "Server_Error";

      if (request.path.remainingPath != null) {
        _xRequestValue = request.path.remainingPath;

        // returns a string like 152 row with 11 column
        socket = await Socket.connect('192.168.xxx.xxx’, 8080); 
        socket.write('$_xRequestValue\r\n');

        socket.handleError((data) {
          _secureResponse = "$_errorData";
        });

        await for (var data in socket) {
            // _cant get all the data from reply, reply shows about 25 row data
          _reply = new String.fromCharCodes(data).trim();
          _secureResponse = "$_reply";

          socket.close();
          socket.destroy();
        } 
      } else {
        _secureResponse = "$_errorData";
      }
    } catch (e) {
        _secureResponse = "$_errorData";
    }

    return new Response.ok("$_secureResponse")
      ..contentType = ContentType.json;
  }
}
...