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

时间: 2024-10-12 14:51:33

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

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

原文:Asp.Net SignalR - 简单聊天室实现 简单聊天室 使用持久链接类我们就可以做一些即时通讯的应用了,我使用Group做了一个简单的聊天室,先上图技术细节下面再讲 可以加入聊天室.创建聊天室.发送消息,下面就说说我是如何通过Group做出来的 持久链接类有一个Groups的对象,通过这个对象,我们可以进行分组添加人员.发送消息.删除人员等操作 在连接事件中,给当前游客指定随机名称,并且返回当前已有的聊天室信息 protected override Task OnConnected

Asp.net MVC4 + signalR 聊天室实现

之前介绍了ServiceBus + SignalR的聊天室设计:http://blog.csdn.net/lan_liang/article/details/46480529 如果还没有Azure账号,可以先完成SignalR的实现,这个例子容易上手一些. 如果要了解Service Bus,可以参照这里: https://azure.microsoft.com/en-gb/documentation/articles/service-bus-dotnet-how-to-use-queues/ 这

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

ASP.Net中有两个重要的对象,一个是application对象,一个是session对象. Application:记录应用程序参数的对象,该对象用于共享应用程序级信息. Session:记录浏览器端的变量对象,用来存储跨网页程序程序的变量或者对象. 说实话,写了快一年的asp.net,application对象还真没怎么用过.看了看书,根据这两个对象的特性写了一个简单的聊天室程序.真的是非常的简陋. 我的思路是,有两个页面Default页和ChatRoom页,页面布局如图: Default

独家分享Asp聊天室开发背景

Asp聊天室开发背景其实可以分为4个方面来为大家讲述: 一.添加Global.asa文件里面的代码.这部分代码主要处理Application_onStart事件,在此事件中,定义了一个有15个元素的数据,并把它赋给了一个Application对象的属性.Global.asa文件的内容如下. <SCRIPT LANGUAGE="VBScript" RUNAT="Server"> SUB Application_OnStart dim maChats(15)

Session和Application实现网络在线聊天室实例

login.aspx代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Sample_chat_login.aspx.cs" Inherits="Sample_chart_login" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &

ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(一) 之 基层数据搭建,让数据活起来(数据获取)

大家好,本篇是接上一篇 ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(零) 前言  ASP.NET SignalR WebIM系列第二篇.本篇会带领大家将 LayIM界面中的数据动态化.当然还不涉及即时消息通讯,如果你已经搞定了数据界面,那么本文您可以简单的看一下,或者略过. 进入正题,layim帮我们定义好了数据规则,我们只要写一个接口实现那个json规范就可以了,剩下的事情就交给layim去做,看一下json格式.(对应文件夹:demo/json/getLi

ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(十四)之漏掉的客服消息

前言 不知不觉已经十四篇了,其实已经没有什么可写了.但是突然发现layim中带的客服功能没有用到.于是乎,抽点时间完成吧.其实之前的工作已经把客服功能完成了一大半,剩下的我们稍微调整即可.今天的演示我们放在后边,直接进入讲解. 客服思路讲解 大家去一些公司网站都会发现,网页侧面或者自动弹出一些客服聊天框,人家很热情的和你交谈.我们也可以用layim来实现.首先,页面添加一个按钮,点击按钮触发客服模式. <a onclick="javascript:global.other.kefu(148

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

简单介绍 关于SignalR的简单实用 请参考 Asp.NET MVC 使用 SignalR 实现推送功能一(Hubs 在线聊天室) 在上一篇中,我们只是介绍了简单的消息推送,今天我们来修改一下,实现保存消息,历史消息和用户在线 由于,我这是在一个项目([无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目 目录索引)的基础上做的,所以使用到的一些借口和数据表,不详细解析,只是介绍一下思路和实现方式,供大家参考 用户登录注册信息 当用户登录之后,我们注册一下用户的信息,我们

ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(七) 之 历史记录查询(时间,关键字,图片,文件),关键字高亮显示。

前言 上一篇讲解了如何自定义右键菜单,都是前端的内容,本篇内容就一个:查询.聊天历史纪录查询,在之前介绍查找好友的那篇博客里已经提到过 Elasticsearch,今天它又要上场了.对于Elasticsearch不感冒的同学呢,本篇可以不用看啦. from baidu: ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,