• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
فراخوانی تابع بدون هیچ رویداد
#1
سلام
حتما قسمت chat box جیمیل رو دیده اید . در این قسمت بدون رخداد هیچ رویدادی یعنی بدون زدن هیچ دکمه یا چیز دیگه ای افراد ی که آنلاین میشن نمایش داده میشه .
سوال من اینه چه جوری میشه این کار رو کرد . یعنی خود به خود یه تابعی که سازنده شی xmlHttp هست رو فراخونی کرد ؟؟؟؟؟؟/
  پاسخ
تشکر شده توسط :
#2
در واقع با جاوااسکریپت هر چند قیقه یک تابع رو فراخونی می کنیم که اون تابع همون تابع چک هست که از طرق تکنیک ajax یه در خواست به سرور می فرسته وسرور در جواب اون افراد انلاین رو میفرسته .
  پاسخ
تشکر شده توسط :
#3
با جاوااسکریپت چه جوری میشه هر لحظه یه تابع رو فراخونی کرد ؟؟؟؟؟؟؟؟؟HuhHuhHuh
دوستان خودم فهمیدم . کد زیر هر 1 ثانیه تابع check_online رو فراخونی می کنه :
کد:
var doInterval;

doInterval = setInterval("check_online()",1000);
  پاسخ
تشکر شده توسط :
#4
مثلا یه تابع داری به نام play که می خوای اون رو هر چند ثانیه اجرا کنی این کار رو به صورت زیر انجام می دیم .


کد پی‌اچ‌پی:
function play()
{
   
interval=setTimeout("play()",100)


interval یک متغیر سراسری برای کنترل بر روی تابع setTimeout هست .

و به صورت زیر می توین اجرای تابع رو متوقف کنیم .


کد پی‌اچ‌پی:
clearTimeout(interval
  پاسخ
تشکر شده توسط : AHMADBADPEY
#5
نه خیر اینطور که حسین عزیز میگن نیست. در واقع گوگل از تکنولوژی comet یا همون ajax Push استفاده میکنه که در واقع رخداد در سمت سرور صادر میشه و سپس به تیع اون داده به کلاینت یا همون مرورگر ارسال میشه. روشی که حسین آقا میگن در واقع pulling هست که مشکل busyWaiting و سربار زیادی رو به سرور تحمیل میکنه.
  پاسخ
تشکر شده توسط : P30TiP
#6
رضا جان میشه در این مورد بیشتر توضیح بدی .
  پاسخ
تشکر شده توسط :
#7
در مورد روش ajax Push تحقیق کردم بله حق با اقا رضا بود از این روش استفاده میشه .

در واقع در این روش در صورت بروز هر رویدادی در سرور , سرور نسبت به اون رویداد به در خواست خا پاسخ میدهد.

در این روش از پروتکول http به صورت معکوس استفاده می شود .

عکس زیر روش کار این تکنیک رو توضیح میده .

[عکس: ajaxpush.png]
  پاسخ
تشکر شده توسط :
#8
یعنی چی به صورت معکوس استفاده شده؟
  پاسخ
تشکر شده توسط :
#9
http به روش معکوس اجرا نمیشه.
در یک مدل ساده روش کار به این صورته که درخواست توسط هدر از یک مرورگر برای سرور ارسال میشه. سرور پس از گرفتن درخواست و پردازش یک فایل html که میتونه حاصل از خروجی کامپایلر php یا هر سرور دیگه ای باشه رو به عنوان پاسخ برمیگردونه.
در آجکس روش به این صورت شد که درخواست به صورت آسنکرون به سرور ارسال میشه و سرور در جواب مقداری رو که میشه یه متن با ساختارهای مختلف نظیر xml باشه رو برمیگردونه.
تا اینجا برای ارسال سرور حتما میبایست یه درخواست از سمت کلاینت صادر میشد ولی در comet بدون صورت گرفتن درخواست از سمت کلاینت، سرور میتونه با دریافت یکسری event های غیر از کلاینت نظیر سرویس های سیستم عامل ، مقادیر مشخصی رو به کلاینت ارسال کنه.
نمودار بالا در واقع همون ajax هست و comet نیست چون پروتکل پرسش-پاسخ در اون مشاهده میشه.
  پاسخ
تشکر شده توسط :
#10
تو مقاله ای که من د این مورد خوندم اینجوری برداشت کردم که در خواستی از طرف کلاینت برای سرور فرستاده میشه و سرور در صورتی پاسخ میده که رویدادی اتفاق افتاده باشه .

در مورد عکسی هم که گذاشتم از همون مقاله برداشتم که در مورد روش ajax push توضیح میده .
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان