Несколько почтовых запросов и небольшой веб-сервер - PullRequest
0 голосов
/ 20 сентября 2011

У меня проблема с небольшим веб-сервером с ограниченными ресурсами:

  • Устройство представляет собой встроенный контроллер с сетевым интерфейсом и использует веб-страницы для конфигурации.

  • Обмен данными осуществляется в формате json и методе отправки.

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

Чтобы проверить это, я создал страницу с несколькими постами для отправки данных на мой сервер.Я открыл страницу браузером Firefox 4.0, и браузер попытался открыть несколько сокетов для параллельного обслуживания всех запросов.

Как создать сообщение с последовательным потоком?(Я не беспокоюсь о скорости)

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

for (var j=0; j<2; j++) {
    // read page data and create objdata  
    jdata = JSON.stringify(objdata);

    // alert("I am about to POST this:\n\n" + jdata);

   $.post(
     'prgtimetbl.json',
     jdata,
     function(data) {
     //           alert("Response: " + data);
     },
     "json"
   );
}

Ответы [ 2 ]

0 голосов
/ 20 сентября 2011

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

Образец: http://jsfiddle.net/HTGPM/

Код:

$(document).ready(function(){
    var stuffToPost = [{name:'obj1',id:1},{name:'obj2',id:2},{name:'obj3',id:3}];
    var postIndex = 0;

    var postNext = function() {
        if (postIndex < stuffToPost.length)
        {
            $.ajax({
                type: 'post',
                url: '?',
                data: JSON.stringify(stuffToPost[postIndex]),
                success: function(data) {
                    alert('Data '+stuffToPost[postIndex].id+' was sent successfully');
                    postIndex++;
                    postNext();
                },
                error: function() {
                    alert('Something bad happened. Stopping');
                }
            });
        }
        else if (postIndex == stuffToPost.length)
        {
            alert('All data is sent !');
        }
    };

    postNext();
});
0 голосов
/ 20 сентября 2011

В jQuery используйте $. Ajax и async: false:

$.ajax({
    type: "POST",
    url: "some.php",
    async: false,
    data: "name=John&location=Boston",
    success: function(msg){
        alert( "Data Saved: " + msg );
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...