Facebook风格的ASP.NET聊天组件

时间:2011-05-04 11:34:48

标签: jquery asp.net ajax facebook chat

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

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

1 个答案:

答案 0 :(得分:3)

试试这个.. 示例图像 - 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);
    }

    /// <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 = "";        
        }
    }
}

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

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