مقالة

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

Mar 12, 2024 4,143
تأمين قنوات 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) أحمل درجة الماجستير في الهندسة الكهربائية وهندسة الحاسوب، فأنا شغوف جدًا بتصميم وتطوير الويب. أستمتع باستكشاف التقنيات الحديثة ومشاركة الأفكار حول إنشاء تجارب رقمية تتمحور حول المستخدم في هذا المجال المثير.

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

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

عرض جميع المقالات
كيف تبقى ناجحًا كمطوّر ويب في 2025 cover

كيف تبقى ناجحًا كمطوّر ويب في 2025

أن تكون مطوّر ويب في 2025 لم يعد بالأمر السهل. المجال يتغيّر بسرعة مذهلة، والذكاء الاصطناعي بدأ يسيط (...)

اقرأ المقال
ما هو نظام EDGE الخلوي؟ cover

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

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

اقرأ المقال
كيفية إنشاء خريطة موقع باستخدام Laravel cover

كيفية إنشاء خريطة موقع باستخدام Laravel

إضافة خريطة موقع (Sitemap) إلى تطبيق Laravel أمر مهم لتواصل موقعك مع محرّكات البحث وإخبارها بكل الروابط وتحسين SEO.

اقرأ المقال