Я хочу оценить время туда и обратно между клиентом и сервером. Здесь пользователь может выбрать, насколько велика величина запроса/ответа сообщения (тела). На стороне клиента я использовал метод Ajax-Post для отправки 100 сообщений с интервалом в 100 мс на http-сервер. Unfortunatley У меня возникла проблема в node.js, что httpServer.js не может обрабатывать размеры запросов клиента более 8 кб. В этом случае переменная responseSizeServer в httpServer.js получает значение «undefined», а консоль выдает ошибку: «Недопустимая длина массива». Вопрос в том, почему переменная responseSizeServer получила значение undefined в этом случае? Я полагаю, что http-Server.js обрабатывает метод .end быстрее, чем входящий запрос от клиента. Как вы думаете, и как это можно решить? Заранее спасибо :)Запросы более 8 kb
Вот код:
клиента:
var i = 0;
var iterations = 100;
function connectSpeed(){
run = window.setInterval("startSpeed()", 100);
}
function startSpeed()
{
//Variablen
var requestSizeClient = 8 *1024; // 8 kb request Size client
var responseSizeServer = 16 * 1024; // 16 kb response size server
var xmlhttp;
xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST","http://localhost:8000", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var receiveTimeCl = new Date().getTime().toString();
//evaluate response from httpServer.js
var message = xmlhttp.responseText;
}
}
//send data to the server
xmlhttp.send(new Date().getTime().toString() + '#' + new Array((eval(requestSizeClient+1))-(new Date().getTime().toString().length+3)).join('X') + '#' + responseSizeServer);
i++;
if(i==iterations) {
window.clearInterval(run);
i=0;
}
}// end start-speed
сервер: (httpServer.js)
var http = require('http');
http.createServer(function (req, res) {
var receiveTimeServer;
var clientMsg;
var sendTimeClient;
var responseSizeServer;
var message;
req.on('data', function (chunk) {
receiveTimeServer = new Date().getTime().toString();
message = chunk.toString('utf8');
clientMsg = message.split('#');
responseSizeServer = parseInt(clientMsg[2]);
sendTimeClient = clientMsg[0];
res.writeHead(200, {'Content-Type': 'text/plain','Access-Control-Allow-Origin' : '*'});
res.end(receiveTimeServer + '#' + new Date().getTime().toString() + '#' + sendTimeClient + '#' + new Array(responseSizeServer).join('X'));
});
}).listen(8000);
console.log('Ajax_Server running');
Большое спасибо, это было правильно! – user3030559