Проблема со вкладками при реализации чата используя технологию Comet

Sookamordiy

Новичок
Всем здравствуйте. При написании модуля обмена сообщениями между пользователями чата по типу "диалоги вконтакте", т.е. сообщения приходят без обновления страницы, и почти сразу после отправки(задержка около секунды), у меня возникла такая проблема: если открыто несколько вкладок с этим чатом, то сообщения доходят не во все вкладки, т.е. если открыты 3 одинаковые вкладки в браузере то: может придти во все 3, или в 2, или в 1. Такого что бы не сообщения не приходили, я пока не встречал, но мне кажется может и такое быть. Фрэймворк: yii. Использую denwer. Использую технологию Comet

Еще один диагноз: denwer долго открывает страницу, около 5-10 секунд, что очень странно. Может в нем дело? Читал в тырнете, что у меня может быть открыт доступ для локальной сети, подскажите как узнать открыт ли он, и если открыт как его закрыть.

Вот скрипт MessageController.php - этот код отвечает за своевременную отправку сообщений.
Код:
 public function actionBackend($id)
	{
        $myid = Yii::app()->user->id;
        $queryUserName = Yii::app()->db->createCommand('SELECT username from users where id='.$id
            )->queryAll();
        $username=$queryUserName[0]['username'];
        $lastmodif=date('Y-m-d H:i:s');
        error_reporting(0);
            while (($query===null) OR empty($query)) {

                $query = Yii::app()->db->createCommand('SELECT *
                    FROM
                        messages
                    WHERE
                        (
                        (from_id = '.$id.'
                        AND to_id = '.$myid.')
                        OR
                        (from_id = '.$myid.'
                        AND to_id = '.$id.'))
                              AND `date`>STR_TO_DATE("'.$lastmodif.' ", "%Y-%m-%d %H:%i:%s")
                    ORDER BY
                        `date` DESC

                ')->queryAll();
                if (!(($query===null) OR empty($query))) break; else sleep(1);
            }


            //знак комету чтобы начал выводить
            echo "%%";
            for ($i = 0; $i < count($query); $i++)
                echo (($query[$i]['from_id']==$myid)? 'Вы'."	":$username."	").': '.$query[$i]['text'].'<br/>';
	}

Вот часть кода из create.php - этот модуль отвечает за вывод сообщений на экран.

Код:
<script type="text/javascript">
 var comet = {
  connection   : false,
  iframediv    : false,
  timestamp    : 0,

  initialize: function() {
    comet.connect();
  },

  connect: function() {
    comet.connection = $.ajax({
       type: "GET",
       url:  "<?php echo Yii::app()->getBaseUrl(true).'/messages/backend?id='. $id ?>",
       data: "timestamp="+comet.timestamp,
       dataType: "html",
       success: function(msg){
         msg = msg.split("%%");
         if (typeof(msg[0]) != "undefined" && msg[0]!="")
          comet.timestamp = parseInt(msg[0]);
         if (typeof(msg[1]) != "undefined")
          $("#cont").append(msg[1]);
          document.getElementById('cont').scrollTop = 100;
          //alert(1);
         setTimeout(function(){ comet.connect() }, 1);
       },
       error: function(){
         setTimeout(function(){ comet.connect() }, 1);
       }
      })

  },

  say: function() {
    var text = $("#text").val();
    var name = $("#name").val();
    $("#text").val("");

    $.ajax({
     type: "POST",
     url:  "<?php echo Yii::app()->getBaseUrl(true).'/messages/backend?id='. $id ?>",
     data: "text="+text+"&name="+name,
     dataType:"html",
     success: function(msg){
     }
    });
  }
}

$(window).load(function(){ comet.initialize(); });

</script>
Буду рад любому совету, зашел в тупик, не знаю что сделать что-бы сообщения приходили во все вкладки. Если кто-то знает другие технологии для реализации чата между зарегистрированными пользователями сайта, делитесь, буду очень рад.
 
Сверху