مقدمة:
تمت كتابة غرفة الدردشة البسيطة الأولى الخاصة بي باستخدام ASP 3.0. إنه ليس أكثر من صندوقين نصيين، يرسلان رسائل إلى متغيرات البرنامج ثم يعرضونها على صفحة يتم تحديثها كل ثانية. في تلك الحقبة، كان يتعين على غرفة الدردشة الحقيقية استخدام Java Applet أو عنصر تحكم ActiveX. لكن كل هذا تغير بعد وصول أجاكس. AJAX هي آلية اتصال غير متزامنة تجمع بين XML وJavaScript. الآن يمكننا القيام بذلك باستخدام كود الخادم والقليل من جافا سكريبت. تقدم هذه المقالة كيفية استخدام تقنية AJAX لإنشاء غرفة محادثة بسيطة.
نموذج البرنامج
نموذج البرنامج عبارة عن غرفة محادثة واحدة متعددة المستخدمين. ويحتفظ بقائمة المستخدمين الذين قاموا بتسجيل الدخول داخليًا. ستقوم القائمة بإزالة المستخدمين الذين لديهم جلسات منتهية الصلاحية. وفي الوقت نفسه، يدعم أيضًا بعض الأوامر مثل /admin Clear لمسح غرفة الدردشة /nick [Name] لتغيير اسم المستخدم.
تحتاج أيضًا إلى معرفة أن
هذا البرنامج يستخدم فئة تسمى ChatEngine. تتحكم هذه الفئة في كافة المستخدمين والرسائل. يتم تخزين المستخدمين في Hashtable، ويتم تخزين الرسائل في StringCollection:
Hashtable users;StringCollection chat;
تم وضع مثيل عام لـ ChatEngine في Global.asax.cs:
public static UChat.ChatEngine.IChatEngine Engine =new UChat.ChatEngine.ChatEngine();
يتم استخدام دالة JavaScript لعرض البيانات بشكل غير متزامن في المتغير العام على الصفحة:
function setTimers(){timeID = window.setTimeout( "updateAll()",freshRate );}
استخدم الاسم والمعرف المقدم من كل مستخدم لتحديد المستخدمين:
public void AddUser(string id, string user){// تأكد من عدم وجود اسم المستخدم بالفعلif(!UserExists(user)){// أضف مستخدمًا إلى قائمة المستخدمين. Add( id, user );//عرض رسالة إعلام لجميع المستخدمين chat.Add( this.MakeServerMessage(string.Format(joinedfmt, user ) ));}}
لقطات الشاشة وخطوات التنفيذ
تعرض الصفحة الرئيسية المعلومات الأساسية لغرفة الدردشة، مثل عدد الأشخاص الموجودين في غرفة الدردشة وحجم سجل الدردشة.
لتتمكن من تسجيل الدخول إلى غرفة الدردشة، يجب توفير اسم.
عند الضغط على زر تسجيل الدخول. سيتم تنفيذ التعليمات البرمجية التالية:
protected void Login( object sender, EventArgs e ){string user = txtUsername.Text;if( !ValidateNick( user ) ) return;if( Global.Engine.UserExists( user ) ){lblErrorMsg Text = "مستخدم بهذا الاسم " +" موجود بالفعل، حاول مرة أخرى."return;}Response.Redirect( "Server.aspx?action=Login&u=" + user );}
بعد بعض التحقق من الصحة، تتم إعادة توجيه المستخدم إلى صفحة أخرى تستخدم الدالة AddUser لإضافة المستخدم إلى قائمة المستخدمين. عندما يتم كل هذا. ستتم إعادة توجيه المستخدم إلى صفحة Chat.aspx، وسيتم تنفيذ وظيفة JavaScript التالية على هذه الصفحة: