2016-06-25 3 views
0

Привет, сообщество stackoverflow, я изучаю, как реализовать Pusher API http://pusher.com в это простое приложение для веб-чата. Я следил за видеоуроком и делал каждый шаг правильно, но когда я пытаюсь отправить сообщение, он будет отображаться правильно в моем веб-браузере, но не будет отображаться или обновляться в другом веб-браузере. Я добавлю 2 файла php, они короткие.Интеграция Pusher с простым веб-приложением php

<!doctype html> 
    <html> 
    <head> 
     <meta charset="utf-8" /> 
     <title>Pusher Messenger</title> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script> 
     <script src="https://js.pusher.com/3.1/pusher.min.js"></script> 
     <script> 

     // Enable pusher logging - don't include this in production 
     //Pusher.logToConsole = true; 

     var pusher = new Pusher('your pusher key here', { 
      encrypted: true 
     }); 

     var channel = pusher.subscribe('channel_pusher'); 
     channel.bind('new_message', function(response){ 
      $('#sent_messages').append('<li>' + response.message + '</li>'); 
     }); 

     $(function(){ 
      $('form').submit(function(){ 
       $.post('ajax.php', { msj : $('#input_mensaje').val() }, function(response){ 
        //funcion de callback 
        $('#sent_messages').append('<li>' + response.message + '</li>'); 
       }, 'json'); 

       return false; 
      }); 
     }); 
     </script> 
    </head> 
    <body> 
     <form action="" methor="post"> 
      <input type="text" id="input_mensaje" /> 
      <input type="submit" class="submit" value="Send" /> 
     </form> 

     <ul id="sent_messages"> 
      <!-- Sent messages will be shown here --> 
     </ul> 
    </body> 
    </html> 

И это мой ajax.php файл:

<?php 
    require('lib/Pusher.php'); 

    $options = array(
     'encrypted' => true 
    ); 

    $message = $_POST['msj']; 

    $pusher = new Pusher(
     'code provided by pusher', 
     'code provided by pusher', 
     'code provided by pusher', 
     $options 
    ); 

    $pusher->trigger(
     'channel_pusher', 
     'new_message', 
     array('message' => $message) 
    ); 

    echo json_encode(array('message' => $message)); 
?> 
+0

Добро пожаловать в StackOverflow. Похоже, вы должны указать, в каком браузере это работает для вас правильно, а в каком - нет. Или это любой другой браузер, включая тот же браузер на другом ПК и другой браузер на вашем ПК? – YakovL

+0

Да, вы правы, он не обновится ни в одном веб-браузере, главная проблема заключается в том, что он не отображает сообщения в режиме реального времени. Например: я пишу «Привет», и он отображает его в моем веб-браузере, но если у меня есть другой веб-браузер рядом с ним, сообщений не будет отображаться. –

+0

Могу ли я получить помощь? –

ответ

0

Я просто проверял свой код с моим собственным ключом приложения, и это, кажется, работает хорошо. Я заметил, однако, что в то время как вы включили ключ приложения и секрет в ajax.php вы цитируемого (которые обычно следует избегать), ваш HTML содержит только

var pusher = new Pusher('your pusher key here', 

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

Еще одна вещь, которую следует отметить, заключается в том, что ваш ajax.php в настоящее время передает сообщение, отправленное с страницы на Pusher, а также обратно на страницу. . Результатом этого является то, что страница, отправившая сообщение, фактически добавит ее дважды, один раз из ответа, возвращаемого ajax.php, и один раз при получении события new_message от Pusher. Это может быть или не быть тем, что вы имели в виду.

+0

hahahaha, извините, вот что, я удалил свой ключ приложения из объекта-толкателя, чтобы не делать моя ключевая публикация на этом форуме, но я забыл удалить ее в файле ajax, так или иначе .. это простое веб-приложение, поэтому мне все равно, я могу запросить новый.Итак, во второй раз, о которой вы упоминали, он повторяется дважды, потому что функция два раза, чтобы избежать необходимости добавить параметр socket_id: pusher.connection.socket_id; и в функцию триггера ajax, но я попробовал, и он не работает. Кроме того, я запускаю WAMP, это может иметь какое-то отношение к моему веб-браузеру, который не заставляет его работать? –