bu .. Numune Resmi deneyin - SimpleChat.jpg Giriş
Ve neden, nasıl web sitesi için kolay bir sohbet odası oluşturmak için olmasın? Eh, en iyi yol mesaj saklamak için güzel bir veritabanı kullanmaktır; Ancak, demo amaçlı olarak, statik bir dizi kullanacağım. Biliyorum, bunu web grubunuzda kullanamazsınız. Bu makaleyi bir çözüm olarak değil, kavram olarak ele alın. Bu basit web sohbet programı destekleyen herhangi bir tarayıcıda çalışması amaçlanmıştır.
Ayrıca, birden çok sohbet odası seçebilirsiniz. Neden oradan ve kanaldan kanala daha fazla uzanmıyorsunuz? Arkaplan
Bazı aylar önce, hayatımı kolaylaştırmak için eksiksiz bir çevrimiçi müşteri hizmeti ASP.NET denetimi arıyordum, ilginç bir şey bulamadım, bu yüzden kendi başıma oluşturdum. iletileri kaydetmek için bir veritabanı kullanıyorsanız kodu
Kullanılması bu sınıfı değiştirin: Collapse
public class Chat
{
static protected ArrayList pArray = new ArrayList();
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);
}
}
static public string GetAllMessages(string sDealer)
{
string sResponse = "";
for (int i=0; i< pArray.Count; i++)
{
sResponse = sResponse +
FormatChat(pArray[i].ToString(), sDealer);
}
return(sResponse);
}
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 = "" + sUser + ": " + sMsg + "";
return(sRet);
}
}
Yukarıdaki kod okur ve bir veritabanında gibi statik diziden yazar. Kod, dizide sadece 200 mesajın olmasına izin verir, bundan sonra o sırada ilk 10'u siler.
Sohbet sayfası oldukça basit; Collapse
public class ChatWin : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox TB_ToSend;
protected System.Web.UI.WebControls.Button BT_Send;
private void Page_Load(object sender, System.EventArgs e)
{
if (Page.IsPostBack == false)
{
if (Request.Params["Channel"] != null)
Session["ChatChannel"] =
Request.Params["Channel"].ToString();
else
Session["ChatChannel"] = "1";
}
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <SUMMARY>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </SUMMARY>
private void InitializeComponent()
{
this.BT_Send.Click +=
new System.EventHandler(this.BT_Send_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
public string GetChatPage()
{
return("TheChatScreenWin.aspx");
}
private void BT_Send_Click(object sender, System.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 (TB_ToSend.Text.Length > 0)
{
PageModule.Chat.AddMessage(sChannel,
sUser,
TB_ToSend.Text);
TB_ToSend.Text = "";
}
}
}
GÖNDER butonuna tıklandığında, statik dizinin sonuna bir satır ekler fonksiyon AddMessage çağırır: Bu aspx.cs arkasında kodudur.
Etiketin içindeki sayfa gerçek sayfanızı yenilemeden her 4 saniyede bir yenilenir.
codeplex üzerinde daha fazla bilgi bulabilirsiniz http://www.codeplex.com/site/search?query=chat&ac=3 –