Ngày gửi: 12/11/2009 lúc 4:04 chiều | Đã khóa IP
|
|
|
|
Giới thiệu ứng dụng chat viết bằng ASP.NET 2.0. Tuy nhiên quy mô của ứng dụng này quá nhỏ, vì vậy mình sẽ không dùng CSDL mà thay vào đó sẽ dùng mảng để lưu dữ liệu. |
Dưới đây là giao diện của khung chat. Mình ko để hiển thị các kênh chat, vì vậy mà khi đăng nhập vào phòng chat để kiểm tra hoạt động của ứng dụng, các bạn nên nhớ các Channel chat trùng tên nhau.
Trở lại với ứng dụng, như đã nói từ đầu, mình sẽ dùng mảng để lưu các đoạn chat. ở đây, mình sẽ chỉ lưu tối đa là 200 dòng. nếu quá 200 dòng thì mình sẽ xóa đi 10 dòng đầu tiên. Tất cả thao tác với dữ liệu mình viết trong lớp Chat.cs. nếu mà kết nối với CSDL thì lớp này sẽ không cần thiết nữa. nội dung của lớp đó như sau:
namespace SimpleChatroom.pageChatRoom { public class Chat { static protected ArrayList pArray = new ArrayList();
/// <summary> /// Chèn dữ liệu và kiểm tra xem có vượt quá 200 dòng ko, nếu vượt qua thì xóa 10 dòng đầu. /// </summary> /// <param name="sDealer"></param> /// <param name="sUser"></param> /// <param name="sMsg"></param> static public void AddMessage(string sDealer, string sUser, string sMsg) { string sAddText = sDealer + "~" + sUser + "~" + sMsg; pArray.Add(sAddText);
if (pArray.Count > 200) { pArray.RemoveRange(0, 10); } }
/// <summary> /// Lấy tất cả dữ liệu. /// </summary> /// <param name="sDealer"></param> /// <returns></returns> static public string GetAllMessages(string sDealer) { string sResponse = "";
for (int i = 0; i < pArray.Count; i++) { sResponse = sResponse + FormatChat(pArray.ToString(), sDealer); }
return (sResponse); }
/// <summary> /// Định dạng chuỗi /// </summary> /// <param name="sLine"></param> /// <param name="sDealer"></param> /// <returns></returns> static private string FormatChat(string sLine, string sDealer) { int iFirst = sLine.IndexOf("~"); int iLast = sLine.LastIndexOf("~");
string sDeal = sLine.Substring(0, iFirst); if (sDeal != sDealer) return ("");
string sUser = sLine.Substring(iFirst + 1, iLast - (iFirst + 1));
string sMsg = sLine.Substring(iLast + 1);
string sRet = "<STRONG>" + sUser + ": </STRONG>" + sMsg + "<BR>";
return (sRet); } } }
Bạn nhớ chú ý tên của Namespace nhé vì nó có liên quan đến việc gọi hàm sau này.
trước khi vào phòng Chat, ta sẽ phải qua một bước đăng nhập. sau đó mới chuyển đến kênh chat.
Response.Redirect("AppChat.aspx?Channel=" + txt_Channel.Text + "&User=" + txt_User.Text);
có 2 tham số đi kèm là Channel và User để biểu thị kênh chat và tên người chat.
Khi được chuyển đến kênh chat, ta sẽ kiểm tra xem đã có kênh chat nào chưa trong hàm Page_Load().
protected void Page_Load(object sender, EventArgs e) { if (Page.IsPostBack == false) { if (Request.Params["Channel"] != null) Session["ChatChannel"] = Request.Params["Channel"].ToString(); else Session["ChatChannel"] = "1"; } }
sau đó, ta chỉ cần viết lệnh xử lý sự kiện click và xong.
protected void btnSend_Click(object sender, EventArgs e) { string sChannel = ""; string sUser = "";
if (Request.Params["Channel"] != null) sChannel = Request.Params["Channel"].ToString(); else sChannel = "1";
if (Request.Params["User"] != null) sUser = Request.Params["User"].ToString(); else { Random pRan = new Random(); int iNum = pRan.Next(9); sUser = "Annonymouse" + iNum; }
if (txtToSend.Text.Length > 0) { pageChatRoom.Chat.AddMessage(sChannel, sUser, txtToSend.Text); txtToSend.Text = ""; }
} }
Bạn có thể download mã nguồn tại đây.
Theo zensoft
Được sửa bởi DUCVINH83 trên diễn đàn 12/11/2009 lúc 4:10 chiều
__________________
YM: DUCVINH83
0912 822334
|