Благодаря Брайану из пустых миров.Я боролся последние 2 дня (и недели повторного поиска), и теперь я могу очень быстро получать большие данные, используя dart tcp socket из старой системы.Процесс с приложением dart console намного быстрее, чем проект Dart Future.
Теперь проблема смешивания приложения консоли dart с приложением aqueduct Future.Ниже я ставлю свои вопросы после (********).
Если я использую Socket.connect ("192 ..... Inside Future, процесс будет очень медленным и иногда возвращает нулевой ответ. Итак, мой вопрос заключается в том, как объединить акведук Future с консольным приложением dart.
часть aqueduct.io
class NtmsApiController extends Controller {
@override
Future<RequestOrResponse> handle(Request request) async {
try {
if (request.path.remainingPath != null) {
_requestValue = request.path.remainingPath;
// (********) In here I need to add below code, how?
}
} else {
_secureResponse = "$_errorData";
}
} catch (e) {
_secureResponse = "$_errorData";
}
return new Response.ok("$_secureResponse")
..contentType = ContentType.json;
}
}
приложение консоли дартс
import 'dart:io';
import 'dart:async';
Socket socket;
String _response;
String _requestedData;
Stopwatch _stopWatch;
void main() {
_stopWatch = Stopwatch()..start();
_response = "";
_requestedData = "Q77:_:NBRT:_:6785417534\r\n";
Socket.connect("192.168.22.120", 3000).then((Socket sock) {
socket = sock;
socket.write('$_requestedData\r\n');
socket.listen(dataHandler,
onError: errorHandler,
onDone: doneHandler,
cancelOnError: false);
}).catchError((AsyncError e) {
print("Unable to connect: $e");
});
print("_requestedData: $_requestedData");
}
void dataHandler(data){
_response = new String.fromCharCodes(data).trim();
_printResponse(_response);
}
void errorHandler(error, StackTrace trace){
print(error);
}
void doneHandler(){
socket.destroy();
}
void _printResponse(String _response) {
// approximately I get 500 rows with 20 column data in 250ms
print("$_response ... (${_stopWatch.elapsedMilliseconds} ms)");
_stopWatch..stop();
if(_stopWatch.isRunning == false) {
socket.close();
// (********)return response object to aqueduct Future request_response--- how?
}
}