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

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. Shichikuji and Power Grid

    D. Shichikuji and Power Grid 参考:Codeforces Round #597 (Div. 2) 思路:一个很裸的最小生成树.把建立基站看成是,城市与源点(虚构的)建边.由 ...

  2. Leetcode题目136.只出现一次的数字(简单)

    ---恢复内容开始--- 题目描述: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外 ...

  3. php屏蔽电话号码中间四位

    php屏蔽电话号码中间四位 一.总结 一句话总结: 直接就是substr_replace函数:$str = substr_replace("13966778888",'****', ...

  4. Ceph 存储集群搭建

    前言 Ceph 分布式存储系统,在企业中应用面较广 初步了解并学会使用很有必要 一.简介 Ceph 是一个开源的分布式存储系统,包括对象存储.块设备.文件系统.它具有高可靠性.安装方便.管理简便.能够 ...

  5. html5验证自适应

    // 移动端跳转 var OS = function() { var a = navigator.userAgent, b = /(?:Android)/.test(a), d = /(?:Firef ...

  6. pycharm中模块不能导入的问题

    在pycharm中发现模块老是导入不成功 只能以这样的映射的方式 现在才知道: 模块的标志符可以由字母.数字.下划线组成,但是, 不能以数字开头,如果在给python文件起名时,以数字开头是无法在py ...

  7. OPERQUERY查询,关于效率,或者说正确用法

    原文:https://blog.csdn.net/u013641136/article/details/50379596 做过一个项目,需要在SQLSERVER创建对ORACLE的DBLINK然后通过 ...

  8. wait_timeout 和 interactive_timeout

    wait_timeout 和 interactive_timeout Table of Contents 1. 参数说明 2. 原代码 3. interactive_timeout覆盖wait_tim ...

  9. 阿里云安装 fastdfs 总结

    还要开放 23000  22122,添加进安全组

  10. HashMap 怎么 hash?又如何 map?

    HashMap 是 Java 中 Map 的一个实现类,它是一个双列结构(数据+链表),这样的结构使得它的查询和插入效率都很高.HashMap 允许 null 键和值,它的键唯一,元素的存储无序,并且 ...