Facebook风格的ASP.NET聊天组件

我将推出一个有点像社交媒体网站的网站。我需要一个基于AJAX的ASP.NET聊天控件,拥有jQuery会很好,因为我的整个网站将以jQuery主题为主题。 我正在寻找的是类似于Gmail或Facebook风格的聊天,因为从用户的角度来看它非常容易使用,并且不会占用大量的屏幕空间。

这里的任何想法都没有我能找到的。 我已经遍布谷歌,并且无法为ASP.NET找到类似的东西。 我看到Php有很多。 以前有人为此工作吗? 我们想在六月推出该网站,所以我必须快速找到一些东西。 感谢帮助。

试试这个..示例图像 – SimpleChat.jpg简介

为什么不,如何为您的网站创建一个简单的聊天室? 嗯,最好的方法是使用一个漂亮的数据库来存储消息; 但是,出于演示目的,我将使用静态数组。 我知道,您将无法在您的Web场中使用它。 以本文为概念,而不是解决方案。 这个简单的网络聊天程序适用于任何浏览器支持。

此外,您可以选择多个聊天室。 为什么不从那里扩展到更多通道。 背景

几个月前,我正在寻找一个完整的在线客户服务ASP.NET控件,让我的生活更轻松,没有发现任何有趣的东西,所以我建立了自己的。 使用代码

如果您使用数据库保存邮件,请替换此类:折叠

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); } } 

上面的代码从静态数组中读取和写入,就像在数据库中一样。 代码只允许在数组中包含200条消息,之后它会删除前10条消息。

聊天页面非常简单; 这是aspx.cs背后的代码:崩溃

 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); } ///  /// Required method for Designer support - do not modify /// the contents of this method with the code editor. ///  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 = ""; } } } 

单击SEND按钮时,它会调用AddMessage函数,该函数将一行添加到静态数组的末尾。

标签内的页面每4秒刷新一次,而不刷新您的实际页面。