Как увидеть содержимое переменной в скрипте, который действует как слушатель: обновление в реальном времени Facebook - PullRequest
0 голосов
/ 10 октября 2011

У меня есть два файла, index.php и callback.php. Index.php используется для отображения данных на сайте. Callback.php - это скрипт, который действует как слушатель. Callback.php вызывается сервером, а переменная $ update в callback.php обновляется сервером в режиме реального времени. Я хочу видеть содержимое переменной $ update каждый раз, когда она обновляется.

Callback.php:

    if ($method == 'GET' && $_GET['hub_mode'] == 'subscribe' &&
        $_GET['hub_verify_token'] == VERIFY_TOKEN) {
      echo $_GET['hub_challenge'];

    } else if ($method == 'POST') {
       $updates = json_decode(file_get_contents("php://input"), true);
       //I want to see the content of $updates
       // resend the push notification again.
        error_log('updates = ' . print_r($updates, true));
     }

Как я могу это сделать? Пожалуйста, дайте мне знать. Буду признателен, если у вас есть пример кода, с которого я мог бы начать.

1 Ответ

1 голос
/ 10 октября 2011

Техника, которую вы мне описываете, называется длинным опросом.

По сути, клиент отправляет ajax-запрос на сервер и сидит в ожидании ответа. При некотором событии (вот где SSJS, такой как Node, действительно пригодится), сервер отправляет клиенту новые данные. Получив данные, клиент немедленно отправляет новый запрос и ожидает следующего обновления.

Вот поток:

Загрузка страниц:

 __________                              _________
|          |                            |         |
| Client A | ---> Request for Data ---> | Server  |
|__________|                            |_________|

Тогда что? Захватывающий:

 __________                              _________
|          |                            |         |
| Client A | .......................... | Server  |
| waiting  |                            | waiting |
|__________|                            |_________|

Кто-то еще обновляет контент, который вы хотите видеть в режиме реального времени:

                     __________
                    |          |
                    | Client B |
                    |__________|
                         |
                         | Sends update to Server
                         |___________________.
                                             |
                                             V
 __________                              _________
|          |                            |         |
| client A | ............<------------- | Server  |
| waiting  |                            | Reacts  |
|__________|                            |_________|
     |
     |
     V    
 __________                              _________
|          |                            |         |
| Client A |   ( No open connection)    | Server  |
| Updates  |                            | Idle... |
|__________|                            |_________|
     |
     |
     V
 ___________                              _________
|           |                            |         |
| Client A  |                            |         |
| Reacts to |                            | Server  |
| Update    | ---> Request for Data ---> |         |
|___________|                            |_________|

промыть, повторить Здесь следует помнить, что HTTP1.1 поддерживает постоянное соединение, то есть оно не прекратит работу, если вы этого не захотите. Я бы порекомендовал посмотреть NodeJS на стороне вашего сервера, чтобы вызвать эти события.

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