php : شرح ال websocket


التعليق السابق

عزيزى .. الحل الذى ذكرته غير صحيح بالمره و ذلك لأنك تتعامل مع Client ID المستخدم الذى تم توليده من قبل ال socket و ليس id المستخدم الحقيقى الموجود فى قاعدة البيانات فى جدول users مثلاً ... فكيف ستربط بينهما .. لا وسيلة لذلك ... إلا بالطرق التى أخبرتك عنها مسبقاً ..

حل آخر و لكنه غير صحيح عملياً ...

عند الدخول للصفحة الخاصة بالشات مثلاً .. يتم الحصول على ال client id الذى تم توليده للمستخدم من قبل ال socket ثم بال ajax ترسلها للسيرفر على أن هذا هو نفس المستخدم الحالى .. و لكن سيكون هناك نوع من التأخير لإنتظار عملية المصادقة هذه .. و بعد عملية المصادقة عند كل ارسال لل socket .. تقوم بالإستعلام عن id المستخدم الحقيقى من خلال client_id الآخر و تقوم بإدراج الرسالة ب id المستخدم الحقيقى فى قاعدة البيانات ..

و لكن المشكلة أن تقوم بفتح متصفح جديد مثلاً و تسجل الدخول سيتم عمل مصادقة جديدة تحذف القديمة ... لذلك يمكنك إستخدام جدول وسيط تحفظ فيه كافة المصادقات التى يتم إنشاؤها و من خلالها يكون جميعهم صالحين للإستخدام

ملحوظه : لو هناك سرعة فى الكتابة أو عدة أشخاص موجودين .. ستجد الرسائل حفظت بشكل غير مرتب فى قاعدة البيانات .. لأن السيرفر سيأخذ وقتاً فى الإستعلام الزائد الخاص بمعرفة ال id الحقيقى

يمكن ارسال مع كل رسالة id المستخدم المعتمد مع ال الرمز او ال hash الذي حصل عليه المستخدم عند تسجيل الدخول و في حال فتح المستخدم مرة أخرى يضاف الترميز و لا يحذف القديم.

لكن أرى أنه عند فتح الحساب ينشىء session باسم ال id و يرسل ال id مع كل رسالة و يتم التحقق من ال session عن طريق ال curl أفضل من استعمال ال database

هذا كان قصدي

الحل عمل نظام مخصص مثلاً رمز تقوم بانشاءه بعد تحميل الصفحة لكل مستخدم يحفظ في القاعدة وتأكد منه بعد الاتصال هذه فكرة مبدئية .

لكن ايضأً انا افضل في الشات sse

websocket جيدة في نظام التنبيهات لكن ان دعمت ال cookies فيما بعد ستكون افضل بكثير .