2016-06-25 120 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。聽起來像你應該指定在哪個瀏覽器中正確地爲你工作,並且在哪個瀏覽器中沒有。還是其他任何瀏覽器,包括另一臺PC上的相同瀏覽器和PC上的另一臺瀏覽器? – YakovL

+0

是的,你是對的,它不會刷新任何網頁瀏覽器,主要問題是它沒有顯示實時消息。例如:我寫了「Hello」,它會將其顯示在我的網絡瀏覽器上,但如果旁邊有另一個網絡瀏覽器,則不會顯示任何消息。 –

+0

我可以得到一些幫助嗎? –

回答

0

我剛纔用我自己的應用程序鍵測試你的代碼,它似乎很好地工作。 我沒有通知,但是,當你包括在你引用(通常應避免)的ajax.php您的應用程序密鑰和密碼,您的HTML只包含

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

請務必提供應用程序鍵在兩個文件中都可以實現與Pusher的實際通信。

另一件需要注意的事情是,您的ajax.php當前將從該頁面提交的消息傳遞給Pusher,並且還返回到頁面本身。 這樣做的結果是,提交消息的頁面實際上會追加兩次,一次是從ajax.php返回的響應,一次是從Pusher收到的new_message事件。 這可能也可能不是你想到的。

+0

haha​​haha,對不起,這是事情,我從推進器對象中刪除了我的應用程序密鑰,我在這個論壇公開的關鍵,但我忘了在ajax文件上刪除它,反正它是一個簡單的網絡應用程序,所以我不在乎,我可以要求一個新的。所以對於你提到的第二件事,它會重複兩次,因爲該函數是兩次,以避免你需要添加一個名爲socket_id的參數:pusher.connection.socket_id;併成爲ajax觸發器功能,但我試過了,它不起作用。另外,我正在運行WAMP,它可能與我的網絡瀏覽器有關,但它不起作用? –

相關問題