У меня проблема с тем, чтобы сильно зависеть от сеансов, чтобы получать обновления в реальном времени на разных компьютерах.Итак, вот сценарий:
[Компьютер A] Страница администратора: при нажатии кнопки определенный текст будет отображаться на каждой странице сайта, независимо от того, чей компьютер к нему обращается.
[Компьютер B] Страница клиента: я должен видеть текст на своей странице в режиме реального времени, не загружая его всякий раз, когда администратор нажимает кнопку.
Вот мой код:
Страница администратора: admin.php
$("#newFight").click(function(){
var newFight = "newFight="+1;
$.ajax({
type: "post",
url: "../includes/newfight.php",
data: newFight,
cache: false,
success: function(html){
if(html == 0){
alert("Open a Game First");
}
else if(html == 1){
$("#newFight").attr('disabled', 'disabled');
// Real time update of fight sequence
$("td#fightId").load('../includes/getfight_id.php');
$("td#fightHead").html("<em>Fight is on.</em>");
}
}
});
});
Страница администратора: newfight.php
session_start();
require_once('dbconn.php');
if(isset($_POST['newFight'])){
if($_POST['newFight'] == $_SESSION['gameActive']){
// Make a new fight
echo $msg = 1;
$query = "INSERT INTO fights(fight_game_id) VALUES(".$_SESSION['game_id'].")";
$execQuery = mysql_query($query);
$last_id = mysql_insert_id();
$_SESSION['fight_id'] = $last_id;
$_SESSION['fight_active'] = 1;
}
if($_POST['newFight'] != $_SESSION['gameActive']){
$msg = 0;
echo $msg;
}
}
?>
Процесс здесь такой: при нажатии кнопки jQuery через AJAX будетобработайте его и установите сеанс ex: $ _SESSION ['button_clicked'] = 1;для справки пользователя, чтобы страница пользователя могла обновляться в режиме реального времени с помощью setInterval (клиента).
А вот страница клиента, которая должна получать обновление в режиме реального времени всякий раз, когда администратор нажимает кнопку.
Страница клиента: client.php
$(function(){
var auto_refresh = setInterval(
function (){
$("td#fightHeadUser").load('../includes/fightheaduser.php');
}, 1000);
});
Страница клиента: fightheaduser.php
session_start();
if(isset($_SESSION['fight_active']) && $_SESSION['fight_active'] == 1){
echo "<em>Fight is on.</em>";
}
if(!isset($_SESSION['fight_active']) && $_SESSION['fight_active'] != 1){
echo "<em>No fight yet.</em>";
}
Так что моя проблема заключается в том, что ...работает только на одном компьютере, поэтому, когда я открываю два браузера (admin и client) и нажимаю кнопку, я вижу, что страница клиента обновляется в режиме реального времени, НО, когда другой компьютер обращается к странице клиента через LAN, это не такработая над ними.Поэтому я подозреваю, что это потому, что сессии хранятся только на моем компьютере, поэтому он не работает на другом компьютере.
Как вы думаете, что я должен делать?Если вы можете предложить мне хорошее, но другое решение, то я бы с удовольствием попробовал.
Извините за мой очень длинный вопрос.ТИА.