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