اذهب إلى المحتوى

السؤال

نشر

السلام عليكم ورحمة الله وبركاته 

اخواني الكرام كيف يمكن عمل اشعارات نفس موقع  اكاديمة حاسوب بحيث عندما افتح موقع تظهر لي اشعارات مثلا قام احمد باضافة منشور قام باضافة ملف 

ممكن توضيح اخواني كيف يتم دلك عن طريق php  ياريت توضيح بالتفاصيل او ارفاق فيديو يوضح ذلك لانه بحثث عن موضوع لم اجد مثل مااريد 

Recommended Posts

  • 0
نشر

يتم الأمر غالبا بالاستعانة بمفهوم الويب سوكيت، وهو بروتوكول اتصال مستعمل في الويب يوفر اتصالا دائما في الوقت الفعلي ما بين الخادم والعميل، بشكل يمكن العميل من التقاط اي اشعارات يتم استحداثها على مستوى الخادم. بحيث يتصل كل العملاء بقناة معينة ويقومون بالاستماع للأحداث التي يتم بثها فيها.

إليك تبسيطا للعملية: 

  • يشترك أحمد في القناة CH1 ويستمع للحدث E1
  • يشترك علي في القناة CH1 ويستمع للحدث E1
  • يشترك عمر في القناة CH1 ويستمع للحدث E1
  • عندما يقوم عمر بعمل اعجاب لمنشور ما، يتم ارسال الطلبية الى الخادم ليتم تسجيل الاعجاب، وفي نفس الوقت يتم استهداف الحدث E1 عبر القناة CH1
  • بما أن كل الثلاثة يستمعون للحدث E1 عبر الثناة CH1 فإن كل من الثلاثة سيتلقى البيانات التي يتم تمريرها عبر القناة ولنقل مثلا تفاصيل الاعجاب او رسالة "اعجب عمر بالمنشور الفلاني".
  • يتلقى كل الثلاثة الرسالة ويقومون بعرضها في شجرة DOM

هاته هي الفكرة بمجملها، 

وتقوم بعض الحزم والمكتبات باختصار الطريق فتوفر لك تطبيقا وواجهة برمجية للتعامل مع هاته المراحل ببساطة.

أما بالنسبة لـ PHP فيمكنك استعمال واحدة من الحزم التي تتوفر، نذكر مثلا Pusher أو Laravel websockets أو ما نحوهما .. 

  • 0
نشر
بتاريخ 10 دقائق مضت قال Adnane Kadri:

يتم الأمر غالبا بالاستعانة بمفهوم الويب سوكيت، وهو بروتوكول اتصال مستعمل في الويب يوفر اتصالا دائما في الوقت الفعلي ما بين الخادم والعميل، بشكل يمكن العميل من التقاط اي اشعارات يتم استحداثها على مستوى الخادم. بحيث يتصل كل العملاء بقناة معينة ويقومون بالاستماع للأحداث التي يتم بثها فيها.

إليك تبسيطا للعملية: 

  • يشترك أحمد في القناة CH1 ويستمع للحدث E1
  • يشترك علي في القناة CH1 ويستمع للحدث E1
  • يشترك عمر في القناة CH1 ويستمع للحدث E1
  • عندما يقوم عمر بعمل اعجاب لمنشور ما، يتم ارسال الطلبية الى الخادم ليتم تسجيل الاعجاب، وفي نفس الوقت يتم استهداف الحدث E1 عبر القناة CH1
  • بما أن كل الثلاثة يستمعون للحدث E1 عبر الثناة CH1 فإن كل من الثلاثة سيتلقى البيانات التي يتم تمريرها عبر القناة ولنقل مثلا تفاصيل الاعجاب او رسالة "اعجب عمر بالمنشور الفلاني".
  • يتلقى كل الثلاثة الرسالة ويقومون بعرضها في شجرة DOM

هاته هي الفكرة بمجملها، 

وتقوم بعض الحزم والمكتبات باختصار الطريق فتوفر لك تطبيقا وواجهة برمجية للتعامل مع هاته المراحل ببساطة.

أما بالنسبة لـ PHP فيمكنك استعمال واحدة من الحزم التي تتوفر، نذكر مثلا Pusher أو Laravel websockets أو ما نحوهما .. 

اريد فيديو يشرح مطلوب اخي عدنان هل يمكن قيام فقط عن طريق لارافل او يمكن ذلك عن طريق php انا تائه في طريقة تعلم مصادر عربيه لايوجد به كل شي 

  • 0
نشر

يوجد العديد من الطرق لتنفيذ المطلوب
مثل عمل long-lasting http requests
أو استعمال fireBase
 ولكن أشهرها هو استعمال الwebsockets, و يوجد مكتبات عديدة على حسب الframework المستعمل 
حيث يكون تحديد المستخدمين في الموقع الذين يستمعون على قناة معينة 
و عند حدوث أمر (event) يتم ابلاغهم .
مثال :
 

<?php
namespace MyApp;

use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;

class NotificationHandler implements MessageComponentInterface
{
    protected $clients;

    public function __construct()
    {
        $this->clients = new \SplObjectStorage;
    }

    public function onOpen(ConnectionInterface $conn)
    {
        $this->clients->attach($conn);
        echo "New connection! ({$conn->resourceId})\n";
    }

    public function onClose(ConnectionInterface $conn)
    {
        $this->clients->detach($conn);
        echo "Connection closed! ({$conn->resourceId})\n";
    }

    public function onError(ConnectionInterface $conn, \Exception $e)
    {
        echo "An error occurred: {$e->getMessage()}\n";
        $conn->close();
    }

    public function onMessage(ConnectionInterface $from, $msg)
    {
        // عند تلقي رسالة، أرسلها إلى جميع العملاء الآخرين
        foreach ($this->clients as $client) {
            if ($client !== $from) {
                $client->send($msg);
            }
        }
    }
}
?>

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...