Мне известны два типа реверса AJAX:
1- опрос
2- Нажатие
Я думаю, что опрос довольно легко реализовать, вы просто заставляете свой javascript делать регулярные запросы к серверу каждый промежуток времени, и когда у сервера есть данные для него, он будет отвечать. Это похоже на пинг, а некоторые называют это сердцебиение, но это очень очевидное решение этой проблемы. Однако это может легко перегрузить сервер.
РЕДАКТИРОВАТЬ Простой опрос Пример кода:
Серверное:
<?php
//pong.php php isn't my main thing but tried my best!
$obj = new WhatsNew();
$out = "";
if ($obj->getGotNew()){
$types = new array();
foreach ($obj->newStuff() as $type)
{
$new = array('type' => $type);
$types[] = $new;
}
$out = json_encode($types);
}
else{
$out = json_encode(array('nothingNew' => true));
}
на стороне клиента:
function ping(){
$.ajax(
{
url : "pong.php",
success : function (data){
data = JSON.parse(data),
if (data['nothingNew'])
return;
for(var i in data){
var type = data[i]['type'];
if (type && incomingDataHandlers[type]){
incomingDataHandlers[type]();
}
}
});
}
incomingDataHandlers = {
comments: function () {
$.ajax({
url: "getComments.php",
method: "GET",
data: getNewCommentRequsetData() // pass data to the server;
success : function (data){
//do something with your new comments
}
});
},
message: function (){
$.ajax({
url: "getMessages.php",
method: "GET",
data: getNewMessageRequestData() // pass data to the server;
success : function (data){
//do something with your new messages
}
});
}
}
$(docment).ready(function () {
setInterval(ping, 1000);
})