ASP.NET чат компонент в стиле Facebook - PullRequest
5 голосов
/ 04 мая 2011

Я буду запускать сайт, похожий на сайт социальных сетей. Мне нужен элемент управления чатом ASP.NET, который должен быть основан на AJAX, и было бы неплохо иметь jQuery, так как весь мой сайт будет тематическим, используя темы jQuery. , То, что я ищу, - это что-то похожее на чат в стиле Gmail или Facebook, так как он очень прост в использовании с точки зрения пользователей и не занимает много места на экране.

Любые мысли здесь нет, что я могу найти. Я просмотрел весь Google и не смог найти ничего подобного для ASP.NET. Есть много там для Php, что я вижу. Кто-нибудь работал над этим раньше? Мы хотим запустить сайт в июне, поэтому я должен найти что-то быстрое. Ценю помощь.

1 Ответ

3 голосов
/ 04 мая 2011

попробуйте это .. Пример изображения - 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 секунды без обновления текущей страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...