[英]Push notifications in php
如何在基于PHP的webapp中实现推送通知。 我真正想要实现的是在某些用户加入聊天后立即收到通知。
假设两个用户是聊天的参与者,如果第三个用户加入了该聊天,则将通知另外两个用户。
我认为您是指使用Javascript向用户发送通知。 可以使用websockets(HTML5)或javascript来完成,每隔x秒就会调用一次服务器。
Websockets很难设置是我的经验。
每x秒通常会浪费资源1,当您吸引大量访问者时会带来很多麻烦。
我使用的解决方案是一个称为pusher的api。 我仅将其用于自己的应用程序,因此我使用免费版本。 但是它就像一个魅力,很容易设置
另请参见Anigel的http://en.wikipedia.org/wiki/Push_technology
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>
使用PHP无法(轻松)将服务器真正推向客户端。 您将需要进行轮询。 您可以在服务器上为每个已连接的客户端创建一个消息队列,并且客户端会使用轮询器自动检索该队列的内容(因此基本上是在每个设置的时间间隔内执行请求)。
如果您希望它简单,那么您需要研究轮询,长时间轮询或使用api。 http://en.wikipedia.org/wiki/Push_technology
当该计算机尚未与服务器建立连接并表示正在等待数据时,无法使用php使服务器通过代理,防火墙等打开与该计算机上程序的连接。
这实际上是长时间轮询所做的事情,客户端与服务器建立连接并使其保持打开状态,以等待服务器告知其某些信息或直到超时。 如果超时,则重新连接
您可以使用notify.pm设置推送通知,而无需开发自己的应用程序。 它大约需要两行代码,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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.