在php中推送通知

问题描述:

如何在基于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

我想你是指使用Javascript的用户通知。这可以使用websockets(HTML5)或JavaScript每x秒钟拨打一次服务器来完成。

Websockets很难安装是我的经验。

每x秒就是1,经常浪费资源,并且当你得到很多访问者时会导致很多麻烦。

我使用的解决方案是一个名为pusher的api。我仅将它用于我自己的应用程序,所以我使用免费版本。但是,它就像一个魅力和易于安装

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

从服务器真正的推送对客户不(容易)可能用PHP。你需要的是投票。您可以在服务器上为每个连接的客户端创建一个消息队列,客户端会使用一个轮询器自动检索该队列的内容(所以基本上每隔设定的时间间隔执行一次请求)。

+0

这似乎是最优化的解决方案,但我仍然希望有一个非常简单的安装引擎。 – manish 2013-05-01 12:37:26

如果您希望它很简单,那么您需要查看轮询,长轮询或使用api。 http://en.wikipedia.org/wiki/Push_technology

有没有办法使用PHP来使服务器打开通过代理,防火墙等连接到计算机上的程序时,该计算机尚未连接到服务器,并表示它正在等待数据。

这就是有效的长轮询所做的事情,客户端连接到服务器并保持打开状态,等待服务器告诉它一些事情,或者直到它超时。如果超时,那么它重新连接

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> 

您可以设置推送通知,而不开发自己的使用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();