已经好几年没写过代码,重新练习起代码,在这做做笔记备忘。

aspx页面js代码:

<script type="text/javascript">
function showMsg()
{
//定时刷新获取聊天内容
var data = "{}";
$.ajax({
type: "POST",
datatype: "json",
contentType: "application/json; charset=utf-8",
url: "WebService1.asmx/GetMessageContent",
success: function (result) {
var msgdiv = document.getElementById("MessageShowDiv");
msgdiv.innerHTML = "";
msgdiv.innerHTML = result.d;
//保持滚动条在最下面
msgdiv.scrollTop = msgdiv.scrollHeight;
}
})
}
var timer1 = window.setInterval("showMsg()", 2000);
//window.clearInterval(timer1) function showOnlineUsers()
{
var users = document.getElementById("OnlineUsersShow");
$.ajax({
type: "POST",
datatype: "json",
contentType: "application/json;charset=utf-8",
url: "WebService1.asmx/GetOnlineUsers",
success: function (result)
{
users.innerHTML = "";
var str = result.d.substring(0,result.d.lastIndexOf("|")).split("|");
var userStr = "";
$.each(str, function (i, val) {
userStr += val + "<br/>";
})
users.innerHTML = userStr;
}
})
}
var timer2 = window.setInterval("showOnlineUsers()", 10000);
//window.clearInterval(timer2) function sendMsg()
{
var txt = document.getElementById("txtMessage");
if (txt.value.length > 0) {
var MsgData = "{Msg:'" + $("#txtMessage").val() + "'}";
$.ajax({
data : MsgData,
type : "POST",
datatype: "json",
contentType: "application/json; charset=utf-8",
url: "WebService1.asmx/SendMsg",
success: function (result) {
if (result.d == "true")
{
showMsg();
txt.value = "";
}
else if (result.d == "OutTime") {
alert("登录超时,请重新登录!");
window.location.href = '_login.aspx';
}
else {
alert("通讯发送错误:" + result.d);
}
},
error: function (e) {
alert(e.d);
}
});
}
else {
alert("请输入内容再发送...");
}
}
</script>

  

  

asmx代码:

[WebMethod (Description ="获取聊天记录",EnableSession = true)]
public string GetMessageContent()
{
if (Application["Message"] == null)
{
return "当前无聊天信息。";
}
int length = Convert.ToInt32(Session["MessageLength"]);
return Application["Message"].ToString().Substring(length);
} [WebMethod(Description = "发送聊天内容", EnableSession = true)]
public string SendMsg(string Msg)
{
//验证用户是否登录超时
if (Session["UserName"] == null)
{
return "OutTime";
}
try
{
//用户 [时间]:内容
string message = Msg.Trim();
string username = Session["UserName"].ToString();
string datenow = DateTime.Now.ToLongTimeString();
string msg = username + " [" + datenow + "] :" + message + "<br/>";
Application.Lock();
Application["Message"] = Application["Message"].ToString() + msg;
Application.UnLock();
return "true";
}
catch (Exception ex)
{
return ex.ToString();
}
} [WebMethod(Description = "获取在线用户")]
public string GetOnlineUsers()
{
if (Application["OnlinePersons"] == null)
{
return "";
}
return Application["OnlinePersons"].ToString();
}

  登录后cs代码:

        protected void btnLogin_Click(object sender, EventArgs e)
{
//记录用户名
Session["username"] = username.Value;
//增加在线用户
Application.Lock();
Application["online"] += username.Value + "|";
Application.UnLock();
//记录登录时存在的聊天信息长度,只显示登录后发生的聊天信息
Session["messageLength"] = 0;
Application.Lock();
Session["messageLength"] = Application["Message"].ToString().Length;
Application.UnLock();
//跳转页面
Response.Redirect("_showMessage.aspx");
}

  

源代码链接:http://pan.baidu.com/s/1o7WuTGu

asp.net练习①——Application聊天室的更多相关文章

  1. 015. asp.net实现简易聊天室

    通过Application和Session来实现简单的聊天室和在线用户数统计 Global.asax代码: <%@ Application Language="C#" %&g ...

  2. Asp.Net SignalR - 简单聊天室实现

    简单聊天室 使用持久链接类我们就可以做一些即时通讯的应用了,我使用Group做了一个简单的聊天室,先上图技术细节下面再讲 可以加入聊天室.创建聊天室.发送消息,下面就说说我是如何通过Group做出来的 ...

  3. Asp.Net - 9.socket(聊天室)

    9.1 Socket相关概念 IP地址 每台联网的电脑都有一个唯一的IP地址. 长度32位,分为四段,每段8位,用十进制数字表示,每段范围 0 ~ 255 特殊IP:127.0.0.1 用户本地网卡测 ...

  4. ASP.NET 使用application和session对象写的简单聊天室程序

    ASP.Net中有两个重要的对象,一个是application对象,一个是session对象. Application:记录应用程序参数的对象,该对象用于共享应用程序级信息. Session:记录浏览 ...

  5. (ASP.net)利用Application对象制作简单聊天室

    1.共四个页面,Default.aspx默认主页,Default2.aspx聊天室 default3.aspx显示用户列表,default4.aspx显示聊天内容,添加一个Global.asax全局程 ...

  6. 转载 ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室(一) 整理基础数据

    ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室(一) 整理基础数据   最近碰巧发现一款比较好的Web即时通讯前端组件,layim,百度关键字即可,我下面要做的就是基于这个前 ...

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

    简单介绍 关于SignalR的简单实用 请参考 Asp.NET MVC 使用 SignalR 实现推送功能一(Hubs 在线聊天室) 在上一篇中,我们只是介绍了简单的消息推送,今天我们来修改一下,实现 ...

  8. Asp.NET MVC 使用 SignalR 实现推送功能一(Hubs 在线聊天室)

    简介       ASP .NET SignalR 是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端 ...

  9. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室 实战系列

    ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(零) 前言  http://www.cnblogs.com/panzi/p/5742089.html ASP.NET S ...

随机推荐

  1. java线程之sleep

    翻译:https://www.journaldev.com/1020/thread-sleep-java 简述 Thread .sleep()方法用来暂停当前线程的执行,以毫秒为单位.还有另一个重载方 ...

  2. 使用git Bash Here 绑定账号密码错误后 无法自动重新绑定

    新安装的git 要打开gitbash 运行下面两个命令:1 git config --global user.name "Your Name"2 git config --glob ...

  3. 2018-2019-2 20165330《网络对抗技术》Exp10 Final 基于PowerShell的渗透实践

    目录 实验内容 实验步骤 实验中遇到的问题 实验总结与体会 实验内容 PoweShell简介 PowerShell入门学习 PowerShell渗透工具介绍 相关渗透实践分析 ms15-034之Pow ...

  4. LeetCode 无重复字符的最长子串(探索字节跳动)

    题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "a ...

  5. 数据结构之队列(Queue)

    1,队列的定义 队列:是一种先进先出的数据结构,如下图所示,现进去的数据在队列前面(front),先出队列,后进入队列的数据在后面(rear),后出队列. 队列常用操作: q=Queue() #创建队 ...

  6. DNA Sorting

    DNA Sorting Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 105159   Accepted: 42124 De ...

  7. 07 MySQL之视图

    01-视图的含义 视图是从一个或者多个表中导出的,视图的行为与表非常相似,但视图是一个虚拟表.视图还可以从已经存在的视图的基础上定义. 02-创建视图 # 基本语法格式: CREATE [OR REP ...

  8. selenium操作cookie

    1,登录网页,使用webdriver的get_cookies获取cookie,并保存json文件 2,读取json文件,遍历添加网站使用的每一个cookies的name,value. 使用add_co ...

  9. 为什么HashMap继承了AbstractMap还要实现Map?

    前言 之前看源码一直忽略了这个现象,按理说HashMap的父类AbstractMap已经实现了Map,它为什么还要实现一次呢?遂上网查了一下,背后原因让人大跌眼镜. 原因 这是类库设计者的拼写错误,其 ...

  10. LVS系列一、LVS集群-NAT模式

    一. 集群概述 1. 什么是集群? 一组各自相互独立且又相互依赖的,通过高速网络互联的计算机组成的一个计算机组, 以单一的系统模式加以管理, 为用户提供服务, 对用户来说, 用户只会认为对方是一个服务 ...