Session和Application实现网络在线聊天室实例

login.aspx代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Sample_chat_login.aspx.cs" Inherits="Sample_chart_login" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title></title>

<style type="text/css" >

body { width:780px; margin:0px auto;}

form { width:400px; margin:0px auto;}

h3 { margin:10px; padding:10px; text-align:center;}

p.tc { text-align:center; }

</style>

</head>

<body>

<form id="form1" runat="server" defaultbutton="Button1" defaultfocus="txt_id">

<div>

<h3>聊天室登录</h3>

<div>

<p class="tc">

<span >用户名:</span>

<asp:TextBox ID="txt_id" runat="server"></asp:TextBox>    </p>

<p  class="tc">

<asp:Button ID="Button1" runat="server" Text="登录聊天室" onclick="Button1_Click" />

</p>

</div>

</div>

</form>

</body>

</html>

login.aspx.cs代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Sample_chart_login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        //记录session: 当前用户名
        //跳转至聊天室页面
        if (txt_id.Text != "") {
            Session["s_id"] = txt_id.Text;
            Server.Transfer("Sample_chat_room.aspx");
        }
    }
}

room.aspx代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Sample_chat_room.aspx.cs" Inherits="Sample_chat_room" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title></title>

<style type="text/css" >

body { width:780px; margin:0px auto;}

h3 { margin:10px; padding:10px; text-align:center;}

p.tc { text-align:center; }

#pnl_chat

{ margin:10px; padding:10px;

border:1px solid #dadada;

height:300px;

}

#div_ctls

{ margin:10px; padding:10px;

border:1px solid #dadade;

}

</style>

</head>

<body >

<form id="form1" runat="server" defaultbutton="Button1" defaultfocus="txt_word">

<div>

<h3>简易聊天室</h3>

<asp:Panel ID="pnl_chat" runat="server" ScrollBars="Vertical">

</asp:Panel>

<div id="div_ctls">

<p>

<asp:TextBox ID="txt_word" runat="server" Width="400"></asp:TextBox>

<asp:Button ID="Button1" runat="server" Text="发送" onclick="Button1_Click" />

&nbsp;

<asp:Button ID="Button2" runat="server" Text="刷新聊天记录"  />

&nbsp;

<asp:Button ID="Button4" runat="server" Text="清空" onclick="Button4_Click"  />

&nbsp;

<asp:Button ID="Button3" runat="server" Text="退出聊天" onclick="Button3_Click" />

</p>

<p>

<span>选择我的颜色:</span>

<asp:DropDownList ID="ddl_color" runat="server">

<asp:ListItem Value="#666666">默认</asp:ListItem>

<asp:ListItem Value="red">红色</asp:ListItem>

<asp:ListItem Value="green">绿色</asp:ListItem>

<asp:ListItem Value="blue">蓝色</asp:ListItem>

</asp:DropDownList>

</p>

</div>

</div>

</form>

</body>

</html>

room.aspx.cs代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Sample_chat_room : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //检测session是否存在,如果没有session值,返回登录页面
        if (Session["s_id"] == "" || Session["s_id"] == null) {
            Response.Redirect("Sample_chat_login.aspx");
        }

            //如果还没有Application["chat"]则创建,如果有则写入panel
            if (Application["chat"] != null)
            {
                pnl_chat.Controls.Add((Panel)Application["chat"]);
            }
            else
            {
                Panel _pnl = new Panel();
                Application["chat"] = _pnl;
            }

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        if(txt_word.Text !="") { // 注意:实际应用中,文本框是否为空,都应在前台进行检测;

        Label lab_name = new Label();
        lab_name.Text = Session["s_id"].ToString() + "[" + DateTime.Now.ToLongTimeString() + "]:";

        Label lab_word = new Label();
        lab_word.Style.Add("color", ddl_color.SelectedValue);
        lab_word.Text = txt_word.Text;

        Literal br = new Literal();
        br.Text = "<br/>";

        Panel _apppnl = (Panel)Application["chat"];
        _apppnl.Controls.AddAt(0, br);
        _apppnl.Controls.AddAt(0, lab_word);
        _apppnl.Controls.AddAt(0, lab_name);

        //_apppnl.Controls.Add(lab_name);
        //_apppnl.Controls.Add(lab_word);
        //_apppnl.Controls.Add(br);

        Application.Lock();
        Application["chat"] = _apppnl;
        Application.UnLock();

        //清空文本框
        txt_word.Text = "";

        pnl_chat.Controls.Add((Panel)Application["chat"]);

        }
    }
    protected void Button3_Click(object sender, EventArgs e)
    {
        Session.Remove("s_id");
        Response.Redirect("Sample_chat_login.aspx");

    }
    protected void Button2_Click(object sender, EventArgs e)
    {

    }
    protected void Button4_Click(object sender, EventArgs e)
    {
        Application.Lock();
        Application.Remove("chat");
        Application.UnLock();

        Server.Transfer("Sample_chat_room.aspx");
    }
}

时间: 2024-10-13 20:11:12

Session和Application实现网络在线聊天室实例的相关文章

基于Server-Sent Event的简单在线聊天室

一.Web即时通信 所谓Web即时通信,就是说我们可以通过一种机制在网页上立即通知用户一件事情的发生,是不需要用户刷新网页的.Web即时通信的用途有很多,比如实时聊天,即时推送等.如当我们在登陆浏览知乎时如果有人回答了我们的问题,知乎就会即时提醒我们,再比如现在电子商务的在线客服功能.这些能大大提高用户体验的功能都是基于Web即时通信实现的. 普通HTTP流程 客户端从服务器端请求网页 服务器作出相应的反应 服务器返回相应到客户端 而由于HTTP请求是无状态的,也就是说每次请求完成后,HTTP链

SignalR实现在线聊天室功能(欢迎、发送、回复、私信、屏蔽)

一.在线聊天室 1.新建解决方案 SignalROnlineChatDemo 2.新建MVC项目 SignalROnlineChatDemo.Web (无身份验证) 3.安装SignalR PM> install-package Microsoft.AspNet.SignalR 4. 创建一个称为 Startup.cs 的新类 1 public class Startup 2 { 3 public void Configuration(IAppBuilder app) 4 { 5 // 有关如何

Asp.NET MVC 使用 SignalR 实现推送功能二(Hubs 在线聊天室 获取保存用户信息)

简单介绍 关于SignalR的简单实用 请参考 Asp.NET MVC 使用 SignalR 实现推送功能一(Hubs 在线聊天室) 在上一篇中,我们只是介绍了简单的消息推送,今天我们来修改一下,实现保存消息,历史消息和用户在线 由于,我这是在一个项目([无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目 目录索引)的基础上做的,所以使用到的一些借口和数据表,不详细解析,只是介绍一下思路和实现方式,供大家参考 用户登录注册信息 当用户登录之后,我们注册一下用户的信息,我们

基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。

基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍.最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室.

Node.js+socket.io在线聊天室

Node.js+socket.io实现在线聊天室,照着这个教程做的,稍加改动即可实现. Node.js:0.10.31 Express:3.* 创建工程chat: 添加几个文件,工程结构如下 代码: package.json: { "name": "application-name", "version": "0.0.1", "private": true, "scripts": { &

django+ajax实现在线聊天室

django+ajax实现在线聊天室 小项目中的一个,就是简单的聊天室 需求: 注册登陆之后才能发言 初始在聊天框中展示最近的消息 发送消息使用ajax,在后台完成消息的存储 使用轮循不断请求get新消息展示在聊天框中 Models 设计聊天消息主题的结构: class Chat(models.Model): sender = models.ForeignKey(User, related_name='has_chats') content = models.TextField() time =

中国寒龙反网络病毒联盟官方荣誉出品 -对接 国外在线 聊天室 畅聊版本 对接全世界网络摄像头 随时随地聊不停,今天写的是教程欢迎访问!

教程请往下面看 上面是 聊天截图  嗯 主站聊天对接网进入口是:www.hackerschina.org大家好,我是寒龙很高兴与大家 共享本站平台  本站平台基于 世界版本在线聊天 !首先看教程!教程如下操作说明!首先点击:www.hackerschina.org 网站  然后点击[寒龙国际聊天]这个按钮!如图所示: 接下来等待几秒会进入对接页面:CR  我们 要点击  Start (F2) 这个按钮   这个按钮 点开以后 会看到  这个对话框Authorization Username是用户

Ajax PHP JavaScript MySQL实现简易的无刷新在线聊天室

思路 消息显示区 发消息 板块 消息显示 消息发送 优化 显示非重复性的数据 优化显示 加上滚动条 每次都显示最新消息 完整代码 前端代码 数据库表结构 服务器端代码 总结与展望 总结 展望 为更好的运用这两天学到的Ajax的相关的知识,就做了个简单的在线网络聊天室. 思路 实现聊天室,基本上就是通过Ajax来传递数据,让PHP来实现对数据的差入和查找,再交给前端JavaScript实现页面的更新,达到即时聊天的功能. 消息显示区 消息显示区就是一个DIV块,我们会借助Ajax获取到服务器端信息

Socket.io在线聊天室

从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏览器就基于V8,同时打开20-30个网页都很流畅.Nodejs标准的web开发框架Express,可以帮助我们迅速建立web站点,比起PHP的开发效率更高,而且学习曲线更低.非常适合小型网站,个性化网站,我们自己的Geek网站!! 关于作者 张丹(Conan), 程序员Java,R,PHP,Java