beh3000
چهارشنبه 14 خرداد 1393, 00:59 صبح
سلام دوستان
من کدی نوشتم برای چت از طریق comet ... قسمت دریافت پیامش رو که توی کنترلر هست کدش رو براتون میذارم مشکل اینجاست که وقتی اون while رو برمیدارم ( وقتی حلقه وایل نداشته باشه مثل اینه که از کلاینت هر دفه به سرور میره و برمیگرده که کامت نمیشه ) وقتی برمیدارم درست کار میکنه ولی وقتی WHILE هست ( درخواست برای 25 ثانیه در سرور باقی میمونه و هر 1 ثانیه چک میکنه که پیام جدید اومده یا نه ) در این حالت درست کار نمیکنه یعنی وقتی صفحه رو رفرش میکنیم هنگ میکنه . نمیدونم مشکل از کجاست امروز رو کلا نشستم روش اصلانشد که نشد
$startTime = strtotime("now");
$maxLoopTime = 25;
while($startTime - strtotime("now") < $maxLoopTime ){
$cc=$this->message_model->count_msguser($id);
if ($cc['cnt']>0) break;
sleep(1000000);
}
این کدی هست که اگه از زمان ورود به حلقه 25 ثانیه گذشته باشه و یا اینکه تعداد پیام جدید بیشتر از صفر باشه از حلقه میاد بیرون و در ادامه ( کدش رو نذاشتم ) پیام های جدید رو واکشی میکنه و برای کار بر میفرسته
لطفا بررسی کنید در ضمن آموزش های comet که توی سایت بود رو هم مطالعه کردم ولی درست نشد
جاوا اسکریپتم هم اینه
var comet_xhr;
function create_xhr() {
var xhr;
if(window.XMLHttpRequest) xhr = new XMLHttpRequest();
else if (window.ActiveXObject) xhr = new ActiveXObject("Microsoft.XMLHTTP");
return xhr;
}
function start_get(){
comet_xhr=create_xhr();
comet_xhr.onreadystatechange=receive_state;
comet_xhr.open("GET", 'get.php');
comet_xhr.send(null);
}
function receive_state() {
if(comet_xhr.readyState!=4) return;
msg=comet_xhr.responseText;
// namayesh message
comet_xhr.open("POST", 'get.php');
comet_xhr.send(null);
}
من کدی نوشتم برای چت از طریق comet ... قسمت دریافت پیامش رو که توی کنترلر هست کدش رو براتون میذارم مشکل اینجاست که وقتی اون while رو برمیدارم ( وقتی حلقه وایل نداشته باشه مثل اینه که از کلاینت هر دفه به سرور میره و برمیگرده که کامت نمیشه ) وقتی برمیدارم درست کار میکنه ولی وقتی WHILE هست ( درخواست برای 25 ثانیه در سرور باقی میمونه و هر 1 ثانیه چک میکنه که پیام جدید اومده یا نه ) در این حالت درست کار نمیکنه یعنی وقتی صفحه رو رفرش میکنیم هنگ میکنه . نمیدونم مشکل از کجاست امروز رو کلا نشستم روش اصلانشد که نشد
$startTime = strtotime("now");
$maxLoopTime = 25;
while($startTime - strtotime("now") < $maxLoopTime ){
$cc=$this->message_model->count_msguser($id);
if ($cc['cnt']>0) break;
sleep(1000000);
}
این کدی هست که اگه از زمان ورود به حلقه 25 ثانیه گذشته باشه و یا اینکه تعداد پیام جدید بیشتر از صفر باشه از حلقه میاد بیرون و در ادامه ( کدش رو نذاشتم ) پیام های جدید رو واکشی میکنه و برای کار بر میفرسته
لطفا بررسی کنید در ضمن آموزش های comet که توی سایت بود رو هم مطالعه کردم ولی درست نشد
جاوا اسکریپتم هم اینه
var comet_xhr;
function create_xhr() {
var xhr;
if(window.XMLHttpRequest) xhr = new XMLHttpRequest();
else if (window.ActiveXObject) xhr = new ActiveXObject("Microsoft.XMLHTTP");
return xhr;
}
function start_get(){
comet_xhr=create_xhr();
comet_xhr.onreadystatechange=receive_state;
comet_xhr.open("GET", 'get.php');
comet_xhr.send(null);
}
function receive_state() {
if(comet_xhr.readyState!=4) return;
msg=comet_xhr.responseText;
// namayesh message
comet_xhr.open("POST", 'get.php');
comet_xhr.send(null);
}