zoukankan      html  css  js  c++  java
  • 模拟新浪新闻在线聊天功能

    前几天看到新浪新闻出现了一个新东西:看同一条新闻的人可以在页面上的一个聊天块中进行聊天。

    聊天的程序功能不是什么新鲜事,不过新浪的这个看同一条新闻的人聊天的这个还蛮有意思。

    关键的地方就是根据不同的新闻将浏览的用户分开,用户可以和另外的看同一条新闻的人聊天,感觉让用户之间的交流更及时紧密。

    我采用asp.net 和 ajax.net模拟了一个类似的功能,还有不完善的地方,例如:自动的更新数据、文本域自动滚动、以及一些外观和功能上的东西 都还没做。另外,功能虽然和新浪的差不多,但是不知道所采用的思路是否相同以及存储方式,数据维护方式等。

    页面:
    ==============================================================

    <%@ Page language="c#" Codebehind="chat.aspx.cs" AutoEventWireup="false" Inherits="Ajax.chat1" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>chat</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    <script language="javascript">
    <!--
    function add()
    {
    //将用户聊天姓名和聊天内容组合成字符串 并赋给str
    var str=document.all.username.value;
    str+=":";
    str+=document.all.str.value;

    var arg=document.location.href.split('?')[1]; //将用户请求的URL的参数部分分离出来并赋给arg变量

    var nowstr = Ajax.chat1.Add(str,arg); //str参数为提交聊天信息的人的姓名和聊天内容组合后的字符串,arg为当前页面的URL参数部分字符串

    document.all.strs.value=nowstr.value; //获取AJAX.NET调用的方法所返回的数据,该数据是APPLICATION所记录的聊天内容
    }
    //-->
    </script>
    </HEAD>
    <body>
    <form id="Form1" method="post" runat="server">
    <TEXTAREA id="strs" style="WIDTH: 696px; HEIGHT: 184px" rows="11" cols="84" runat="server">
    </TEXTAREA><BR>
    <INPUT id="username" style="WIDTH: 88px; HEIGHT: 22px" type="text" size="9"><INPUT id="str" type="text"><INPUT type="button" value="Button" onclick="add();">
    </form>
    </body>
    </HTML>

    代码:
    ========================================================================

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
     
    namespace Ajax
    {
         ///<summary>
         /// chat1 的摘要说明。
         ///</summary>
         public class chat1 : System.Web.UI.Page
         {
             protected System.Web.UI.HtmlControls.HtmlInputText arg;
             protected System.Web.UI.HtmlControls.HtmlTextArea strs;
        
             private void Page_Load(object sender, System.EventArgs e)
             {
                  // 在此处放置用户代码以初始化页面
     
                  //初始化AJAX
                  AjaxPro.Utility.RegisterTypeForAjax(typeof(chat1));
     
                  //获得用户请求的参数部分的字符串
                  string arg = Request.Url.ToString().Split('?')[1];
     
                  //初试文本域内内容为APPLICATION集合中相应项已存储的数据
                  strs.Value=(Application[arg]+"").ToString();
             }
     
            
             [AjaxPro.AjaxMethod]
             public string Add(string str,string arg)
             {
                  //加入用户提交的聊天信息
                  HttpContext.Current.Application[arg]+=str+"/n";
     
                  //返回APPLICATION集合中相应项已存储的数据
                  return (string)HttpContext.Current.Application[arg];
             }
            
     
             #region Web 窗体设计器生成的代码
             override protected void OnInit(EventArgs e)
             {
                  //
                  // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
                  //
                  InitializeComponent();
                  base.OnInit(e);
             }
            
             ///<summary>
             ///设计器支持所需的方法 - 不要使用代码编辑器修改
             ///此方法的内容。
             ///</summary>
             private void InitializeComponent()
             {   
                  this.Load += new System.EventHandler(this.Page_Load);
     
             }
             #endregion
         }
    }
     
    相关AJAX.NET的信息请看   我的BLOG中的“AJAX.NET初体验”一文
  • 相关阅读:
    js数组去重五种方法
    wm_concat 多行字符串拼接
    ORACLE WITH AS 简单用法
    layui laytpl 语法
    看懂Oracle执行计划
    GIT RM -R --CACHED 去掉已经托管在GIT上的文件
    sourceTree使用教程--拉取、获取
    SourceTree忽略文件和文件夹
    layui table 详细讲解
    利用POI实现下拉框级联
  • 原文地址:https://www.cnblogs.com/ZetaChow/p/2237428.html
Copyright © 2011-2022 走看看