PHP PUSH в Javascript

Прямо сейчас у нас есть веб-приложение, которое запускается в локальной сети, где клиенты запускают все в javascript. Чтобы убедиться, что все синхронизировано, эти клиенты в настоящее время используют запрос AJAX к серверу, отправляя последний полученный «syncId». Затем сервер отвечает деревом массивов команд, чтобы обновить этот клиент. Это выполняется каждую секунду и еще не вызвало каких-либо проблем с пропускной способностью сети или задержкой, однако в следующем месяце мы устанавливаем систему на более крупном клиенте, что может расширить пределы этого метода, и мне интересно, возможно ли иметь сервер " PUSH" события синхронизации для клиентов в режиме реального времени.

srvResponse=httpGet("CDSSync.php?sessionKey="+sessionKey+"&lastUpdate="+lastUpdate);
if(srvResponse!=0){
    syncEvents=srvResponse.split(";");
    for(var i=0; i<syncEvents.length; i++){
         syncItem=syncEvents[i].split(",");
         window["syncFunction_"+syncItem[1]](syncItem[2]);
         lastUpdate=syncItem[0];
     }
}

В приведенном выше примере моя система проверяет события для синхронизации, где syncItem[0] — это идентификатор автоинкремента, syncItem[1] — код обрабатываемого события, а syncItem[2] — параметр функции. вызываемая функция httpGet, хотя и не в этом коде, является просто функцией, которая получает данные с сервера и возвращает ответ.


person PC3TJ    schedule 23.10.2015    source источник
comment
Вам следует взглянуть на socket.io.   -  person mario.klump    schedule 23.10.2015
comment
Хорошо, я буду. Я подумал, что это должна быть розетка! Я просто надеялся, что в jscript или jquery будет встроена небольшая приятная функция push.   -  person PC3TJ    schedule 23.10.2015
comment
@mapek я вижу, что socket.io основан на nodes.js. Работают ли nodes.js и socket.io с браузерами без установленной среды выполнения узлов?   -  person PC3TJ    schedule 23.10.2015
comment
Пожалуйста, проверьте stackoverflow.com/a/22015350   -  person mario.klump    schedule 23.10.2015
comment
Возможно, это могло бы помочь: w3.org/TR/eventsource   -  person JeffProd    schedule 29.10.2015


Ответы (1)


Взгляните на www.firebase.com, вы можете настроить push-сервис от javascript-клиентов ко всем остальным за считанные минуты. Сначала попробуйте простой учебник:

<!doctype html>
<html>
  <head>
    <script src='https://cdn.firebase.com/js/client/2.2.1/firebase.js'></script>
    <script src='https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js'></script>
    <link rel='stylesheet' type='text/css' href='/resources/tutorial/css/example.css'>
  </head>
  <body>
    <div id='messagesDiv'></div>
    <input type='text' id='nameInput' placeholder='Name'>
    <input type='text' id='messageInput' placeholder='Message'>
    <script>
      var myDataRef = new Firebase('https://hbw30ob2a8y.firebaseio-demo.com/');
      $('#messageInput').keypress(function (e) {
        if (e.keyCode == 13) {
          var name = $('#nameInput').val();
          var text = $('#messageInput').val();
          myDataRef.push({name: name, text: text});
          $('#messageInput').val('');
        }
      });
      myDataRef.on('child_added', function(snapshot) {
        var message = snapshot.val();
        displayChatMessage(message.name, message.text);
      });
      function displayChatMessage(name, text) {
        $('<div/>').text(text).prepend($('<em/>').text(name+': ')).appendTo($('#messagesDiv'));
        $('#messagesDiv')[0].scrollTop = $('#messagesDiv')[0].scrollHeight;
      };
    </script>
  </body>
</html>
person vacsora    schedule 03.11.2015
comment
наше программное обеспечение обменивается данными только через локальную сеть, и многие клиенты даже не имеют доступа в Интернет - person PC3TJ; 04.11.2015