مقالة

تأمين قنوات WebSocket في بيئة التطوير المحلية: دليل باستخدام Soketi وLaravel Valet

Mar 12, 2024 4,042
تأمين قنوات WebSocket في بيئة التطوير المحلية: دليل باستخدام Soketi وLaravel Valet

في هذا الدليل سنوضّح كيفية إعداد القنوات الخاصة باستخدام ‏Laravel Valet و‏Soketi. إذا واجهت صعوبات في إنشاء اتصالات WSS مع Valet بسبب مشكلات SSL، أو لم تكن متأكداً من كيفية تهيئة قناة خاصة في بيئة Valet المحلية، فأنت في المكان الصحيح.

لنبدأ مباشرة. تأكّد أولاً من تثبيت Soketi باتباع ‏دليل التثبيت والذي يجعله يعمل افتراضياً على المنفذ 6001. يجب أن يعمل الأمر soketi start دون مشاكل، وعند زيارة 127.0.0.1:6001 في المتصفح ستظهر كلمة "ok".

بعد تثبيت Soketi يمكنك استخدامه كما هو للقنوات العامة وضبطه في ملف .env كما ورد في ‏التوثيق لأنه يستخدم منفذ WS غير المشفّر. لكن عند محاولة فتح قناة خاصة ستحتاج إلى اتصال WSS (ويب سوكِت آمن)، وهو غير متاح افتراضياً. قد تظهر المشكلة أيضاً إذا كان اتصال مشروعك آمناً ويتحول تلقائياً إلى WSS بدلاً من WS.

لجعل Soketi يعمل على قناة آمنة في Valet يجب أولاً إنشاء وكيل proxy آمن للمنفذ 6001 عبر الأمر:

valet proxy socket-server http://127.0.0.1:6001 --secure

ينشئ هذا الأمر موقعاً افتراضياً باسم socket-server.test مرتبطاً بعنوان 127.0.0.1:6001 ومزوّداً بشهادة.

وبعد تأمين الاتصال، أنشئ ملف ضبط JSON لتشغيل Soketi. أنشئ ملفاً باسم soketi_config.json وضع فيه المحتوى التالي:

{
  "debug": true,
    "appManager.array.apps": [
      {
        "id": "app-id",
        "key": "app-key",
        "secret": "app-secret",
        "maxConnections": -1,
        "enableClientMessages": false,
        "enabled": true,
        "maxBackendEventsPerSecond": -1,
        "maxClientEventsPerSecond": -1,
        "maxReadRequestsPerSecond": -1,
        "webhooks": [

        ],
        "ssl": [
          {
            "certPath" : "the patch to .crt for socket-server.test that we created earlier",
            "keyPath": "the patch to .key for socket-server.test that we created earlier",
            "passphrase": "",
            "caPath": ""
      
          }
        ]
      }
    ]
  }

في macOS ستجد ملفّي ‎.crt و.key في المسار: ‎/Users/yourname/.config/valet/Certificates.

وشغّل خادم Soketi بهذا الملف عبر:

soketi start ----config=/Users/yourname/path_to/soketi_config.json

وفي ملف .env، عوضاً عن:

PUSHER_HOST=127.0.0.1
PUSHER_PORT=6001

استخدم الآن:

PUSHER_HOST=socket-server.test
PUSHER_PORT=

تهانينا! يعمل اتصال WSS الآن بسلاسة في بيئة Valet لديك.

أحمد يوسف
أحمد يوسف

بصفتي مطورًا متكاملًا (Full-Stack) أحمل درجة الماجستير في الهندسة الكهربائية وهندسة الحاسوب، فأنا شغوف جدًا بتصميم وتطوير الويب. أستمتع باستكشاف التقنيات الحديثة ومشاركة الأفكار حول إنشاء تجارب رقمية تتمحور حول المستخدم في هذا المجال المثير.

مقالات مرتبطة

قد يعجبك أيضًا

عرض جميع المقالات
ما هو نظام EDGE الخلوي؟ cover

ما هو نظام EDGE الخلوي؟

EDGE ‏(Enhanced GPRS) نظام بيانات يُستخدم على شبكات GSM. يوفّر سرعة أكبر بثلاث مرات من نظام GPRS.

اقرأ المقال
شرح علاقات قواعد البيانات cover

شرح علاقات قواعد البيانات

سيساعدك هذا المقال على فهم مفهوم علاقات قواعد البيانات. فإتقانها يسهّل اتخاذ القرارات أثناء تصميم قاعدة البيانات أو تخطيط التطبيق.

اقرأ المقال
الفرق بين خدمات الجيل الثاني (2G) والجيل الثالث (3G) cover

الفرق بين خدمات الجيل الثاني (2G) والجيل الثالث (3G)

هناك عدة فروق بين خدمات الجيل الثاني 2G وخدمات الجيل الثالث 3G، وفيما يلي قائمة ببعضها: (...)

اقرأ المقال