ห้องแชทแรกของฉันเขียนใน ASP 3.0 โปรแกรมค่อนข้างง่าย ในเวลานั้นเพื่อสร้างห้องแชทจริงต้องใช้แอปเพล็ต Java หรือ ActiveX ห้องแผนภูมิที่ใช้ http ต้องเผชิญกับคำถามเดียวกันกับห้องแชทแรกของฉัน ปัญหาเหล่านี้รวมถึงปรากฏการณ์การกระพริบของหน้าจอที่เกิดจากการรีเฟรชหน้า แต่ปัญหานี้ได้รับการแก้ไขโดย AJAX Ajax เป็นการรวมกันของการโทรแบบ javascript และ XML แบบอะซิงโครนัส ตอนนี้ใช้รหัส JavaScript บนเซิร์ฟเวอร์เพื่อให้ได้ห้องแชทจริง บทความนี้จะไม่แนะนำ AJAX และสันนิษฐานว่าคุณมีความเข้าใจในการใช้ AJAX และ ASP.NET เพียงแนะนำวิธีใช้เทคโนโลยี AJAX เพื่อสร้างห้องแชทขั้นพื้นฐาน
กิจวัตรประจำวัน
นี่คือห้องแชทเดี่ยวของผู้ใช้หลายคน มันสามารถบรรลุฟังก์ชั่นการแชทขั้นพื้นฐานและยังรองรับบรรทัดคำสั่งบางอย่างเช่น: /ผู้ดูแลระบบล้างเพื่อล้างประวัติการแชท /นิค [ชื่อ] เพื่อเปลี่ยนชื่อเล่นของผู้ใช้ โปรแกรมแสดงโปรแกรมนี้เพื่อประมวลผลข้อมูลการแชททั้งหมดและข้อมูลผู้ใช้ด้วยคลาส Chatedine
ผู้ใช้ Hashtable;
การแชท StringCollection;
ประกาศอินสแตนซ์ ChatEngine ทั่วโลกใน global.asax.cs แบ่งปันผู้ใช้ทั้งหมดในห้องแชท:
public Static uchat.chatngine.ichatngine engine = ใหม่ uchat.chatngine.chatengine ();
นอกจากนี้ยังมีฟังก์ชั่นตัวจับเวลา JavaScript ที่ใช้ในการซิงโครไนซ์ตัวแปรส่วนกลางและข้อมูลหน้า
ฟังก์ชั่นการตั้งถิ่นฐาน ()
-
timeId = window.settimeout (updateAll (), รีเฟรช);
-
ผู้ใช้แต่ละคนจะถูกระบุโดยชื่อผู้ใช้และ GUID
Public Void Adduser (String ID, String user)
-
// ตรวจสอบให้แน่ใจว่าชื่อผู้ใช้ไม่มี alreamy
if (! userexists (ผู้ใช้))
-
// เพิ่มผู้ใช้ในรายชื่อผู้ใช้
users.add (id, ผู้ใช้);
// แสดงข้อความการแจ้งเตือนถึงผู้ใช้ทุกคน
chat.add (this.makeservermessage (string.format (string.format (
เข้าร่วม fmt, ผู้ใช้))));
-
-
โปรแกรมรันอินเตอร์เฟส
หน้าเริ่มต้นแสดงข้อมูลพื้นฐานบางอย่างเกี่ยวกับเซสชันปัจจุบันเช่นหมายเลขผู้ใช้ขนาดของประวัติการแชท ผู้ใช้จะต้องระบุชื่อผู้ใช้เพื่อเข้าห้องแชท คลิกปุ่มเข้าสู่ระบบเพื่อป้อนฟังก์ชั่นด้านล่าง:
การเข้าสู่ระบบเป็นโมฆะที่ได้รับการป้องกัน (ผู้ส่งวัตถุ EventArgs E)
-
string user = txtusername.text;
if (! validatenick (ผู้ใช้)) ส่งคืน;
if (global.engine.userexist (ผู้ใช้))
-
lblerrormsg.text = ผู้ใช้ที่มีสิ่งนี้ +
ชื่อ Alream มีอยู่แล้วลองอีกครั้ง;
กลับ;
-
Response.redirect (server.aspx? action = เข้าสู่ระบบ & u = + ผู้ใช้);
-
หลังจากการตรวจสอบอย่างง่ายผู้ใช้จะถูกเพิ่มลงในรายการผู้ใช้ผ่านฟังก์ชั่น Adduser จากนั้นเข้าสู่การแชทหน้าห้องแชท
<script type = text/javascript>
SniffBrowserType ();
// แสดงการโหลด .. หน้าจอ
showloadscreen ();
// ตั้งค่า Timer JavaScript และ
// โหลดรายการผู้ใช้และข้อความ
ผู้ตั้งถิ่นฐาน ();
setFocus ('mytext');
</script>
เมื่อผู้ใช้พิมพ์ข้อมูลและส่งคืนฟังก์ชั่นต่อไปนี้จะถูกเรียก:
<ประเภทอินพุต = คลาส text = mytext
id = mytext onedown = capturereturn (เหตุการณ์)>
// จับคีย์ Enter ในกล่องอินพุตและข้อความโพสต์
ฟังก์ชั่น capturereturn (เหตุการณ์)
-
if (event.which || event.keycode)
-
if ((event.hich == 13) || (event.keycode == 13))
-
posttext ();
กลับมาเป็นเท็จ;
-
อื่น {
กลับมาจริง;
-
-
-
ฟังก์ชั่น posttext ()
-
RND ++;
// ล้างกล่องข้อความก่อน
chatbox = GetElement (mytext);
chat = chatbox.value;
chatbox.value =;
// รับ GUID ผู้ใช้จาก URL
userId = logation.search.substring (1, localal.search.length);
// สร้าง URL เซิร์ฟเวอร์ AJAX
url = 'server.aspx?
encodeuricomponent (แชท) + '& session =' + rnd;
// สร้างและตั้งค่าอินสแตนซ์
// ของวัตถุคำขอ XMLHTTP ที่เหมาะสม
req = getajax ();
// อัปเดตหน้าด้วยข้อความใหม่
req.onreadyStateChange = function () {
if (req.readystate == 4 && req.status == 200) {{
updateAll ();
-
-
req.open ('get', url, true);
req.Send (NULL);
-
มีมากมายไม่มีอะไรพิเศษคุณสามารถเห็นซอร์สโค้ดมีข้อมูลคำอธิบายประกอบจำนวนมากในนั้น
สรุปแล้ว
ในการสร้างห้องสนทนาด้วย Java Applet คุณต้องติดตั้ง JVM บนเครื่องของผู้ใช้ มีปัญหาด้านความปลอดภัยบางอย่างเกี่ยวกับการควบคุม ActiveX ด้วย AJAX ที่เพิ่งเปิดตัวคุณสามารถสร้างโปรแกรมห้องแชทได้อย่างง่ายดายตาม HTTP ที่ไม่ต้องการให้ผู้ใช้ติดตั้งซอฟต์แวร์ใด ๆ และง่ายต่อการบำรุงรักษา