如何在基于 PHP 的 webapp 中实现推送通知。我真正想要实现的是在一些用户加入聊天时立即收到通知。
假设两个用户是聊天的参与者,如果第三个用户加入该聊天,则通知其他两个用户。
如何在基于 PHP 的 webapp 中实现推送通知。我真正想要实现的是在一些用户加入聊天时立即收到通知。
假设两个用户是聊天的参与者,如果第三个用户加入该聊天,则通知其他两个用户。
我认为您的意思是使用 Javascript 向用户发出通知。这可以使用 websockets (HTML5) 或每 x 秒调用您的服务器的 javascript 来完成。
Websockets 很难设置是我的经验。
每 x 秒,1 经常浪费资源,并且当您获得大量访问者时会导致很多麻烦。
我使用的解决方案是一个名为pusher的 api 。我只将它用于我自己的应用程序,所以我使用免费版本。但它就像一个魅力,很容易设置
另请查看来自 Anigel的http://en.wikipedia.org/wiki/Push_technology
将NodeJS + SocketIO添加到您的堆栈中怎么样?
SocketIO 让您为您的客户创建一个房间,它可以向一个客户房间发送消息。
让我向您展示一个基本示例:
通知.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);
})
});
客户端.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 开发自己的应用程序。大约需要 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();