asp.net练习①——Application聊天室
已经好几年没写过代码,重新练习起代码,在这做做笔记备忘。
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聊天室的更多相关文章
- 015. asp.net实现简易聊天室
通过Application和Session来实现简单的聊天室和在线用户数统计 Global.asax代码: <%@ Application Language="C#" %&g ...
- Asp.Net SignalR - 简单聊天室实现
简单聊天室 使用持久链接类我们就可以做一些即时通讯的应用了,我使用Group做了一个简单的聊天室,先上图技术细节下面再讲 可以加入聊天室.创建聊天室.发送消息,下面就说说我是如何通过Group做出来的 ...
- Asp.Net - 9.socket(聊天室)
9.1 Socket相关概念 IP地址 每台联网的电脑都有一个唯一的IP地址. 长度32位,分为四段,每段8位,用十进制数字表示,每段范围 0 ~ 255 特殊IP:127.0.0.1 用户本地网卡测 ...
- ASP.NET 使用application和session对象写的简单聊天室程序
ASP.Net中有两个重要的对象,一个是application对象,一个是session对象. Application:记录应用程序参数的对象,该对象用于共享应用程序级信息. Session:记录浏览 ...
- (ASP.net)利用Application对象制作简单聊天室
1.共四个页面,Default.aspx默认主页,Default2.aspx聊天室 default3.aspx显示用户列表,default4.aspx显示聊天内容,添加一个Global.asax全局程 ...
- 转载 ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室(一) 整理基础数据
ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室(一) 整理基础数据 最近碰巧发现一款比较好的Web即时通讯前端组件,layim,百度关键字即可,我下面要做的就是基于这个前 ...
- Asp.NET MVC 使用 SignalR 实现推送功能二(Hubs 在线聊天室 获取保存用户信息)
简单介绍 关于SignalR的简单实用 请参考 Asp.NET MVC 使用 SignalR 实现推送功能一(Hubs 在线聊天室) 在上一篇中,我们只是介绍了简单的消息推送,今天我们来修改一下,实现 ...
- Asp.NET MVC 使用 SignalR 实现推送功能一(Hubs 在线聊天室)
简介 ASP .NET SignalR 是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端 ...
- ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室 实战系列
ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(零) 前言 http://www.cnblogs.com/panzi/p/5742089.html ASP.NET S ...
随机推荐
- java线程之sleep
翻译:https://www.journaldev.com/1020/thread-sleep-java 简述 Thread .sleep()方法用来暂停当前线程的执行,以毫秒为单位.还有另一个重载方 ...
- 使用git Bash Here 绑定账号密码错误后 无法自动重新绑定
新安装的git 要打开gitbash 运行下面两个命令:1 git config --global user.name "Your Name"2 git config --glob ...
- 2018-2019-2 20165330《网络对抗技术》Exp10 Final 基于PowerShell的渗透实践
目录 实验内容 实验步骤 实验中遇到的问题 实验总结与体会 实验内容 PoweShell简介 PowerShell入门学习 PowerShell渗透工具介绍 相关渗透实践分析 ms15-034之Pow ...
- LeetCode 无重复字符的最长子串(探索字节跳动)
题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "a ...
- 数据结构之队列(Queue)
1,队列的定义 队列:是一种先进先出的数据结构,如下图所示,现进去的数据在队列前面(front),先出队列,后进入队列的数据在后面(rear),后出队列. 队列常用操作: q=Queue() #创建队 ...
- DNA Sorting
DNA Sorting Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 105159 Accepted: 42124 De ...
- 07 MySQL之视图
01-视图的含义 视图是从一个或者多个表中导出的,视图的行为与表非常相似,但视图是一个虚拟表.视图还可以从已经存在的视图的基础上定义. 02-创建视图 # 基本语法格式: CREATE [OR REP ...
- selenium操作cookie
1,登录网页,使用webdriver的get_cookies获取cookie,并保存json文件 2,读取json文件,遍历添加网站使用的每一个cookies的name,value. 使用add_co ...
- 为什么HashMap继承了AbstractMap还要实现Map?
前言 之前看源码一直忽略了这个现象,按理说HashMap的父类AbstractMap已经实现了Map,它为什么还要实现一次呢?遂上网查了一下,背后原因让人大跌眼镜. 原因 这是类库设计者的拼写错误,其 ...
- LVS系列一、LVS集群-NAT模式
一. 集群概述 1. 什么是集群? 一组各自相互独立且又相互依赖的,通过高速网络互联的计算机组成的一个计算机组, 以单一的系统模式加以管理, 为用户提供服务, 对用户来说, 用户只会认为对方是一个服务 ...