2013-05-01 156 views
0

如何在基於PHP的webapp中實現推送通知。 我實際上想要實現的是在某個用戶加入聊天時收到通知。在php中推送通知

假設兩個用戶是聊天的參與者,如果第三個用戶加入該聊天,那麼其他兩個用戶將被通知。

+0

你還沒有真的給什麼去嘗試讀取HTTP://en.wikipedia。org/wiki/Push_technology然後搜索php和選擇的方法 – Anigel 2013-05-01 12:18:12

+0

我已經在網上搜索任何東西,輪詢對我來說不是件事,因爲它使其他請求超級緩慢,APE是一個更多的ajax推動引擎,但它又複雜建立。我只需要相當簡單,資源少。 – manish 2013-05-01 12:29:52

+0

當某人在聊天框中輸入某些內容時,您目前如何向用戶發送消息,因此無法使用相同的方法。 – Anigel 2013-05-01 12:37:58

回答

1

我想你是指使用Javascript的用戶通知。這可以使用websockets(HTML5)或JavaScript每x秒鐘撥打一次服務器來完成。

Websockets很難安裝是我的經驗。

每x秒就是1,經常浪費資源,並且當你得到很多訪問者時會導致很多麻煩。

我使用的解決方案是一個名爲pusher的api。我僅將它用於我自己的應用程序,所以我使用免費版本。但是,它就像一個魅力和易於安裝

也期待在http://en.wikipedia.org/wiki/Push_technology,從Anigel

0

從服務器真正的推送對客戶不(容易)可能用PHP。你需要的是投票。您可以在服務器上爲每個連接的客戶端創建一個消息隊列,客戶端會使用一個輪詢器自動檢索該隊列的內容(所以基本上每隔設定的時間間隔執行一次請求)。

+0

這似乎是最優化的解決方案,但我仍然希望有一個非常簡單的安裝引擎。 – manish 2013-05-01 12:37:26

0

如果您希望它很簡單,那麼您需要查看輪詢,長輪詢或使用api。 http://en.wikipedia.org/wiki/Push_technology

有沒有辦法使用PHP來使服務器打開通過代理,防火牆等連接到計算機上的程序時,該計算機尚未連接到服務器,並表示它正在等待數據。

這就是有效的長輪詢所做的事情,客戶端連接到服務器並保持打開狀態,等待服務器告訴它一些事情,或者直到它超時。如果超時,那麼它重新連接

1

NodeJS + SocketIO添加到您的堆棧怎麼辦?

SocketIO讓我們爲您的客戶創建一個空間,它可以發送消息到客戶的房間。

讓我告訴你一個簡單的例子:

notification.js

var app = require('http').createServer(), 
    io = require('socket.io').listen(app); 

app.listen(3000); 

io.sockets.on('connection', function (socket) { 
    // Joining a room 
    socket.join('chatroom'); 

    socket.on('newUserJoinRequest', function(data) { 
     socket.broadcast.to('chatroom').emit('newUserJoinedNotification', data); 
    }) 

}); 

client.html

<!DOCTYPE html> 
<head> 
    <meta charset="utf-8">  
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>  
    <script type="text/javascript" src="http://localhost:3000/socket.io/socket.io.js"></script> 
</head> 
<body> 
    <input type="text" id="username" placeholder="name"> 
    <button type="text" id="joinButton">Join</button> 
    <div id="responses"> 
     <h2>NodeJS+SocketIO responses:</h2> 
     <ul></ul> 
    </div> 

    <script> 
     var socket; 
     jQuery(document).ready(function() { 
      socket = io.connect('//localhost:3000'); 

      socket.on('newUserJoinedNotification', function(data) { 
       var li = '<li>A new user joined the room: ' + data.name + '</li>';  
       jQuery('#responses ul').append(li); 
      }); 
     }); 

     jQuery('#joinButton').click(function() { 
      var username = jQuery('#username').val(); 
      socket.emit('newUserJoinRequest', {name: username}); 
     }); 
    </script> 

</body> 
</html> 
0

您可以設置推送通知,而不開發自己的使用notify.pm的應用程序。它需要大約2行代碼,API是在這裏: https://github.com/notifypm/notifypm-php-api

<?php 

require_once("notifypm.class.php"); 

$n = new Notifypm('email', 'password', '.pmNumber'); 
$n->push('Message!', 'Link (optional)!'); 

$n->disconnect();