2011-05-04 29 views
5

Bir sosyal medya sitesi gibi bir site başlatıyor olacağım. AJAX tabanlı olması gereken bir ASP.NET sohbet kontrolüne ihtiyacım var ve jQuery'm tümüyle benim için iyi olacak site jQuery Temaları kullanılarak temalı olacaktır. Aradığım şey, kullanıcıların bakış açısından kullanması çok kolay olduğu ve çok fazla ekran mülkiyeti almadığı için Gmail veya facebook stili sohbete benzer bir şeydir.Facebook style ASP.NET sohbet bileşeni

Burada herhangi bir düşünce bulunamıyor. Google'ın her yerine baktım ve ASP.NET için böyle bir şey bulamadım. Gördüğüm Php için çok fazla var. Daha önce bunun üzerinde çalışan var mı? Siteyi Haziran ayında başlatmak istiyoruz, bu yüzden hızlı bir şeyler bulmam gerekiyor. Yardımı takdir et.

+0

codeplex üzerinde daha fazla bilgi bulabilirsiniz http://www.codeplex.com/site/search?query=chat&ac=3 –

cevap

3

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.