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

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. oracle面试题1

    1.题目要求 已知关系模式:S (SNO,SNAME)学生关系.SNO 为学号,SNAME 为姓名C (CNO,CNAME,CTEACHER)课程关系.CNO 为课程号,CNAME 为课程名,CTEA ...

  2. 预处理、const、static与sizeof-使用宏定义得到一个数组所含的元素个数

    1:代码如下: #define ARR_SIZE(a) (sizeof((a)) / sizeof((a[0])))

  3. 梯度提升树GBDT总结

    提升树的学习优化过程中,损失函数平方损失和指数损失时候,每一步优化相对简单,但对于一般损失函数优化的问题,Freidman提出了Gradient Boosting算法,其利用了损失函数的负梯度在当前模 ...

  4. Could not attach to a Hearthstone process.

    配置的加载 // Hearthbuddy.Windows.ConfigurationWindow // Token: 0x060001DB RID: 475 RVA: 0x00088A3C File ...

  5. MAC-下安装php-redis扩展

    MAC下安装php-redis扩展   下载php-redis,地址:https://nodeload.github.com/nicolasff/phpredis/zip/master 下载完成得到p ...

  6. 在编译内核之前到底应该使用make mrproper,make distclean,make clean中的哪个命令呢?

    1. 先找到描述这三个命令的相关信息 在内核目录下使用make help命令可以获取相关信息,信息如下: Cleaning targets: clean - Remove most generated ...

  7. rsync同步脚本

    #!/bin/bash export LANG=C date=`date +%Y-%m-%d-%H%M` red=`echo -e "\033[0;31m"` blue=`echo ...

  8. 7. grep

    grep命令 grep grep是通用正则表达式分析程序(General Regular Expression Parser)的缩写. grep命令可以在它的输入中搜索指定的字符串模式(Pattern ...

  9. SpringBoot: 1.创建第一个SpringBoot项目(转)

      一.新建项目 二.打开项目的pom文件,在里面添加maven依赖 1 <!--springboot项目依赖的父项目--> 2 <parent> 3 <groupId& ...

  10. RocketMQ之十:RocketMQ消息接收源码

    1. 简介 1.1.接收消息 RebalanceService:均衡消息队列服务,负责通过MQClientInstance分配当前 Consumer 可消费的消息队列( MessageQueue ). ...