ساخت چت روم با php توسط WebSocket

ساخت چت روم با php

در این آموزش ، قصد داریم نحوه ساخت یک چت روم ساده با php و سوکت پروگرمینگ ایجاد کنیم . ساخت چت روم با php و قابلیت HTML5 ساده و جالب است . WebSocket یکی از قابلیت های جالب HTML5 برای ایجاد یک ارتباط (connection) بین یک مرورگر وب و سرور است .

در اینجا درواقع از WebSocket برای ایجاد پلی برای ارسال یا دریافت پیام ها از سرور چت php استفاده می کنیم.

برای ساخت یک ارتباط سوکت بین سرور و کلاینت ، ما از پروتکل WebSocket (ws://) برای ایجاد یک ارتباط دو طرفه بین سرور و کلاینت با اسکریپت php استفاده می کنیم. بعد از ساخت WebSocket ، توابع بازگشتی برای مدیریت رویداد های بین سرور و کلاینت حین پروسه چت وجود داردند . اولین بار که یک کانکشن با سرور ایجاد شد , همه داده های WebSocket که بصورت frame است به جای ارسال درخواست های HTTP , به صورت مستقیم از یک سوکت رد می شود.. این قابلیت به ما امکان پیاده سازی کانکشن های پایدار بین مرورگر و سرور را می دهد.

ساخت چت روم با php

ساخت WebSocket و مدیریت رویدادها

اسکریپت زیر برای ساخت یک webSocket کلاینت ساید و تعریف توابع بازگشتی برای مدیریت رویداد های مختلف چت ها استفاده می شود. این هندل ها به ما اطلاعاتی در مورد وضعیت اتصال ، پیام ها و هر نوع خطای دیگری را می دهند. پیام ها با فرمت داده JSON کد شده و به سمت سرور ارسال می شوند.

 

برنامه نویسی سوکت برای ساخت چت روم با php

کد php زیر درخواست یک کانکشن جدید سوکت را برررسی می کند . اگر هر درخواست اتصال جدید پیدا شد ، بعد با ایجاد یک ارتباط سه طرفه یک سوکت را ایجاد می کند و سپس اطلاعاتی در مورد اتصال به صورت اینکد شده ارسال می کند.

بعد از دریافت اطلاعات از اتصال فعلی و دیکد کردن ، آن را به کلاینت چت ارسال میکند . همه این موارد توسط کلاس ChatHandler مدیریت می شود.

 

و کلاس ChatHandler به اینصورت است :

 

برقراری اتصال توسط خط فرمان (command line)

تصویر زیر عکسی از خط فرمان برای ایحاد یک کانکشن با سیستم چت را نشان می دهد :

ساخت چت روم با php

خروجی ساخت چت روم با php :

ساخت چت روم با php

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

 

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۷۸)

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. مهدی شوقیان ۳۰ خرداد ۱۴۰۲

    با سلام و عرض ادب خدمت استاد عزیز جناب شفیعی بزرگوار.
    استاد اولا واقعا از شما بابت مطالب آموزنده ای که در وب سایتتون قزار دادید تشکر می کنم و به شخصه خیلی از مطالب آموزنده شما استفاده و بهره بردم و می برم.
    جسارتا یک سوال برام پیش اومده که می خواستم بپرسم اما راستش نمی دونم چطوری و کجا بپرسم از این روی در این موضوع قرارش دادم.
    استاد من تقریبا چندین وقت هست که وب سایت شما رو دنبال می کنم.
    راستش اوایل وقتی وارد مطالب آموزشی می شدم در قسمت دانلود باکس وقتی می خواستم سورس و یا کد های مربوطه رو دانلود کنم بطور مستقیم دانلود می شد. چند وقت بعد دیدم که دانلود باکس شما کمی تغییر کرده و باید ایمیل رو وارد کنم تا لینک مطلب آموزشی دانلود بشه. و فکر می کردم که شما برای ارتقا این تغییر رو اعمال کردید. اما جالبی موضوع از اونجایی شروع شد که وقتی آدرس وب سایت شما رو در یک سیستم و محل دیگه وارد کردم تا شخص دیگه ای معرفی کنم دانلود باکس به نحو قبلی نمایش داده میشه. جسارتا می خواستم بدونم چرا و چطوری میشه این رو پیاده کرد. و اصطلاحا در طراحی وب به این سیستم چی میگن؟ با تشکر و قدر دانی فراوان مهدی شوقیان

    پاسخ
    1. حسن شفیعی ۳۱ خرداد ۱۴۰۲

      سلام خوشحالیم که مفید واقع شده
      این مورد بخاطر کش هست و اینجا میتونید اطلاعات کامل رو ببینید :
      https://netparadis.com/php-cache
      https://netparadis.com/php-webpage-cache

      پاسخ
  2. پرهام ناصحی ۱۴ مرداد ۱۴۰۱

    سلام . من یک ارور دریافت میکنم وقتی دستور مورد نظر رو در CDM وارد میکنم .
    این ارور رو میده :
    PHP Fatal error: Uncaught Error: Call to undefined function socket_create() in D:\xampp\htdocs\chatroom\php-socket.php:9
    Stack trace:
    #۰ {main}
    thrown in D:\xampp\htdocs\chatroom\php-socket.php on line 9

    Fatal error: Uncaught Error: Call to undefined function socket_create() in D:\xampp\htdocs\chatroom\php-socket.php:9
    Stack trace:
    #۰ {main}
    thrown in D:\xampp\htdocs\chatroom\php-socket.php on line 9

    پاسخ
    1. حسن شفیعی ۲۱ مرداد ۱۴۰۱

      سلام. باید ماژول سوکت رو برای php تون فعال کنید
      برای اینکار کافیه خط extension=php_sockets.dll رو به فایل php.ini اضافه کنید و بعد وب سرور رو ریستارت کنید (اگه این خط از قبل وجود داشت کافیه ; رو از اول خط بردارید تا از کامنت بودن خارج بشه)

      پاسخ
      1. پرهام ناصحی ۲۲ مرداد ۱۴۰۱

        خیلی ممنون .

        یه سوال – برای اجرای سوکت در هاست باید حتما هاست اختصاصی باشه یا با هاست اشتراکی هم میشه ؟

        پاسخ
      2. حسن شفیعی ۲۲ مرداد ۱۴۰۱

        هاست مجازی نیازه تا دسترسی شل داشته باشید

        پاسخ
  3. مهرداد ۲۴ اردیبهشت ۱۴۰۱

    سلام وقت بخیر، ممنون از آموزش.

    آیا سوکت داخلی توضیح داده شده، قدرت پردازش ۵۰۰۰ کاربر آنلاین رو (فرض بر دارا بودن یک سرور با منابع کافی و تنظیم مکس کلاینت آپاچی و تغییر مکس سوکت به حداکثر) داره، و یا باید رفت سراغ فریم ورک هایی نظیر لاراول وب سوکت؟

    پاسخ
    1. حسن شفیعی ۲۴ اردیبهشت ۱۴۰۱

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

      پاسخ
  4. amir ۱۸ شهریور ۱۴۰۰

    سلام و خسته نباشید از websocket میتوان از چندین سایت مختلف قسمت چت برای دپارتمانهای مختلف در یک سرور ارسال کرد و یوزرهای همان سرور همزمان می توانند پاسخگوی چت های دریافتی باشند ؟

    پاسخ
    1. حسن شفیعی ۲۰ شهریور ۱۴۰۰

      سلام ممنون.
      خیر باید با ajax و یک کد سمت سرور هم ترکیب کنید

      پاسخ
  5. siamak ۲۴ اردیبهشت ۱۴۰۰

    html ش کجاس پس :/

    پاسخ
    1. حسن شفیعی ۲۴ اردیبهشت ۱۴۰۰

      سلام.
      از دانلود باکس سورس کامل رو دانلود کنید

      پاسخ
دوره های آموزشی