@fornit1917 извиняюсь, что забросил тему. Вопрос исчерпан: проблема была в порядке загрузки модулей. Нужно было воткнуть
app.use(connect.multipart({uploadDir:'./uploads', limit:2147483648}));
куда-нибудь перед
app.use(app.router);
и да, bodyParser оказался бесполезен за что и был выключен.
@ruslite так не нужно задерживать отправку, попробуйте сделать два разных запроса для отправки и обновления данных. А по поводу доставки недоставленных сообщений: может просто таймаут для соединения не настал и браузер еще не успел убить соединения, отправляющие сообщения?
@ruslite он не сохраняет в памяти сообщение, а лишь время обращения. В моем коде замените server.onRequest(function(request) { на привязку к запросу о новом сообщении, а request.ip на получение IP адреса (или любого другого идентификатора пользователя). И в //а тут мы ответим на запрос:) как и раньше отдавайте данные клиенту)
Сервер, как я понял, на NodeJS стоит.
Тогда времена обновлений клиентов можно хранить прямо в памяти, а запросы (еще лучше) не будут тормозить, а ждать в очереди.
Примерный алгоритм:
var timing={};
server.onRequest(function(request) {
var time=0;
if (!!timing[request.ip])
time=timing[request.ip]-Date.now()+2000; //Задержка 2 сек.
setTimeout(function() {
timing[request.ip]=Date.now();
//а тут мы ответим на запрос:)
},time);
});
Таким образом запрос дождется 2 сек. после предыдущего обновления и обработается. В случае, когда прошло более 2 сек. задержка будет <=0 и функция просто встанет в очередь без ожидания.
Стоит также помнить, что подобным образом нужно тормозить лишь ajax запросы. Видимые тормоза никто не любит.
Конечно, это нельзя просто взять и скопировать, я лишь показал суть реализации.