【问题标题】:Facebook style ASP.NET chat componentFacebook 风格的 ASP.NET 聊天组件
【发布时间】:2011-08-18 11:15:57
【问题描述】:

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

这里没有我能找到的任何想法。我在谷歌上找遍了所有的东西,却找不到任何类似 ASP.NET 的东西。我看到有很多Php。有没有人在这方面工作过?我们想在 6 月推出该网站,所以我必须快速找到一些东西。感谢您的帮助。

【问题讨论】:

标签: jquery asp.net ajax facebook chat


【解决方案1】:

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

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

此外,您可以选择多个聊天室。为什么不从那里延伸,更多地从一个渠道延伸到另一个渠道。 背景

几个月前,我正在寻找一个完整的在线客服 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 秒刷新一次,而不刷新您的实际页面。

【讨论】:

    猜你喜欢
    • 2014-07-14
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 2010-12-24
    • 2012-08-11
    • 2011-11-05
    相关资源
    最近更新 更多