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

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. Nginx 499的问题

    PHP 异步 HTTP 与 NGINX 499 PHP 异步 HTTP 在 PHP 代码中提交异步 HTTP 请求比较常用的方式是通过 fsockopen/fwrite/fclose 来实现,请参考如 ...

  2. HDU 5705 Clock(2016杭电女生专场1004)——角度追及问题

    题意是给出一个当前的时间和角度a,问从现在开始的下一个时针和分针形成角度a的时间是多少,时间向下取整. 分析:时针3600s走30°,故120s走1°,分针3600s走360°,故10s走1°,那么每 ...

  3. HearthBuddy Magnetic 磁力

    https://hearthstone.gamepedia.com/Magnetic Magnetic is an ability exclusive to certain Mech minions ...

  4. Kbengine游戏引擎-【4】demo-kbengine_unity3d_demo 在容器docker上安装测试

    git地址:https://github.com/kbengine/kbengine_unity3d_demo Demo中文地址:https://github.com/kbengine/kbengin ...

  5. WPF学习笔记 - 如何用WPF创建单实例应用程序

    使用一个已命名的(操作系统范围的)互斥量. bool mutexIsNew; using(System.Threading.Mutex m = new System.Threading.Mulex(t ...

  6. 每个开发者都应该知道的SOLID原则

    每个开发者都应该知道的SOLID原则 单一职责原则(SRP) 它为什么违反了 SRP? 这种设计将来会带来什么问题? 开闭原则(OCP) 如何使它(AnimalSound)符合 OCP? 里氏替换原则 ...

  7. git显示不出来图标标志

    git操作的文件夹,发现没有显示出来是否上传的绿色图标,这样导致不清楚哪些文件是否修改,是否上传. 以下方法让我的问题解决了,但我并不知道是不是所有人的问题都适用这种方法,如果你也遇到这种问题,可以尝 ...

  8. XmlEncrypt

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  9. LeetCode.1170-比较字符串中最小字符的出现频率(Compare Strings by Frequency of the Smallest Char)

    这是小川的第412次更新,第444篇原创 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第263题(顺位题号是1170).在一个非空字符串s上定义一个函数f(s),该函数计算s中最小字 ...

  10. 【CodeForces - 682C】Alyona and the Tree(dfs)

    Alyona and the Tree Descriptions 小灵决定节食,于是去森林里摘了些苹果.在那里,她意外地发现了一棵神奇的有根树,它的根在节点 1 上,每个节点和每条边上都有一个数字. ...