`

asp.net 基于ajax 实现即时消息

 
阅读更多

很多的sns网站都提供了短消息功能。而且,如果我们在线的话会很快的收到好友的短消息。
这里介绍一种客户端的方法,简单实现。

主要的表:
user
    :Uid UName Password 三个字段
Message
    :Mid, SenderId, ReceiverId, State, Detail(SenderId和 ReceiverId)都是外键且对应user表中的Uid。


主要的思路很简单:用js每隔五秒钟发送一次ajax请求,获取当前用户在Message表中State为未读取(这里约定为数字1)且ReceverId为当前用户ID的Message 记录的数量。

页面的代码:
<%@ Page Language="C#" CodeBehind="Default.aspx.cs" Inherits="MIDemo._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
    <!-- 两个js脚本文件-->
    <script type="text/javascript" src="SqlHelp/jquery-1.3.2.js"></script>
    <script type="text/javascript" src="SqlHelp/GetMessageCount.js"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div style=" border-color:Green; border-style:solid; margin-top:100px; margin-left:300px; width:300px; height:50px; text-align:center;">
        您有<input type="text" value="0" id="messageCount"/><a href="ShowMessage.aspx">条短消息</a>
    </div>
    </form>
</body>
</html>

js代码:这里用到了Jquery框架,不再赘述,网上有很多的资料。
GetMessageCount.js
//------GetMessageCount.js Begin----------------------
if(!GetMessageCount){
    var GetMessageCount = {};
}

$(document).ready(
    function(){
        GetMessageCount.FindMessage();
    }
);

GetMessageCount.FindMessage = function(){
        $.ajax({
           //处理ajax请求
           url:'FindNewMessage.ashx',
           // 当前用户的ID,这里图省事就省略了,直接写死为 1,
           //实际使用过程中可以从session中获取 。。。。
           data:{Uid:1},
           cache: false,
           //回调函数返回未读短信数目
           success: function(response)
           {
              $('#messageCount').val(response);
           },
           error:function(data)
           {
               alert("加载失败");
           }
       });
       //每隔5 秒递归调用一次,刷新未读短信数目
       window.setTimeout(GetMessageCount.FindMessage,5000);核心语句
}
//------GetMessageCount.js End----------------------

到了这里,贴出处理ajax请求页面的代码,非常简单
FindNewMessage.ashx

//----------------'FindNewMessage.ashx Begin
using System;
using System.Collections;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;

namespace MIDemo
{
    /// <summary>
    /// $codebehindclassname$ 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class FindNewMessage : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
              //就这一句代码,获取未读短信的数量,返回页面
              //后台的sql代码就省略了
            int count = SqlHelp.SqlHelp.GetUnreadMessageCount(Convert.ToInt32(context.Request["Uid"]));
            //返回页面
            context.Response.Write(count);
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

//----------------'FindNewMessage.ashx End

 

分享到:
评论

相关推荐

    Asp.Net基于Ajax的无刷新聊天室

    Asp.Net基于Ajax的无刷新聊天室,可以带来以下两点好处: ·页面实时更新,无需完全刷新页面; ·聊天内容更新时,只需要读取最新的聊天信息,做到“按需取数据”。 本项目将会实现以个基于Ajax的无刷新聊天室,其...

    完全手册ASP.NET AJAX实用开发详解 源码

    本书从易到难、由浅入深、循序渐进系统地介绍了ASP.NET AJAX(C#)知识点和基于AJAX的Web应用系统的开发技术。全书通俗易懂,大量的实例供读者更加深刻地巩固所学习的知识,使读者更好地进行开发实践。 本书共分为15...

    (C#)基于ASP.NET AJAX的即时聊天程序--EasyTalk

    最近做的一个课程设计,是一个基于WEB的聊天程序,利用asp.net ajax1.0控制,来实现局部无刷新。可以包括注册、登录、获取密码(以邮件形式发送新密码)、无刷新显示好友列表、好友在线状态、聊天信息、发送信息、...

    ASP.NET1.1+AJAX即时聊天室

    用vs2003.net开发的一个聊天室,希望对大家有所帮助.

    完全手册:ASP.net.Ajax

    全书从易到难、由浅入深、循序渐进系统地介绍了ASP.NET AJAX(C#)知识点和基于AJAX的Web应用系统的开发技术。全书通俗易懂,大量的实例供读者更加深刻地巩固所学习的知识,使读者更好地进行开发实践。 本书共分为15...

    基于C#+asp.net+sqlserver的即时通讯软件设计与实现(源码+文档).net_ajax_C#_即时通讯软件.zip

    资源名字:基于C#+asp.net+sqlserver的即时通讯软件设计与实现(源码+文档)_.net_ajax_C#_即时通讯软件.zip 资源内容:项目全套源码+完整文档 源码说明: 全部项目源码都是经过测试校正后百分百成功运行。 适合场景...

    完全手册:ASP.net Ajax电子教程(1-8章)

    第一篇 ASP.NET AJAX概述 第1章 初识ASP.NET AJAX  1.1 ASP.NET AJAX概述  1.1.1 ASP.NET和ASP.AJAX  1.1.2 ASP.AJAX服务器端架构  1.1.3 ASP.AJAX客户端架构  1.2 搭建ASP.NET AJAX开发环境  1.3 第一个ASP...

    完全手册:ASP.net Ajax电子教程(9-15章)

    第一篇 ASP.NET AJAX概述 第1章 初识ASP.NET AJAX  1.1 ASP.NET AJAX概述  1.1.1 ASP.NET和ASP.AJAX  1.1.2 ASP.AJAX服务器端架构  1.1.3 ASP.AJAX客户端架构  1.2 搭建ASP.NET AJAX开发环境  1.3 第一个ASP...

    完全手册:ASP.NET AJAX实用开发详解 part3

    全书从易到难、由浅入深、循序渐进系统地介绍了ASP.NET AJAX(C#)知识点和基于AJAX的Web应用系统的开发技术。全书通俗易懂,大量的实例供读者更加深刻地巩固所学习的知识,使读者更好地进行开发实践。 本书共分为15...

    基于AJAX的WebIM(ASP.NET + JQuery + AJAX)

    本 WebIM 系统采用 B/S 模式,使用浏览器 ajax 实现即时聊天。 服务器端采用 MC 设计模式,Controler 自下而上分为:收发模块、编码模块、加密解密模块、序列化/反序列化模块、主处理模块(包含 DAO);其中加密解密...

    完全手册ASP.NETAjax实用开发详解(14-15)

    第一篇 ASP.NET AJAX概述 第1章 初识ASP.NET AJAX  1.1 ASP.NET AJAX概述  1.1.1 ASP.NET和ASP.AJAX  1.1.2 ASP.AJAX服务器端架构  1.1.3 ASP.AJAX客户端架构  1.2 搭建ASP.NET AJAX开发环境  1.3 第一个ASP...

    完全手册:ASP.net Ajax电子教程-part1

    全书从易到难、由浅入深、循序渐进系统地介绍了ASP.NET AJAX(C#)知识点和基于AJAX的Web应用系统的开发技术。全书通俗易懂,大量的实例供读者更加深刻地巩固所学习的知识,使读者更好地进行开发实践。. 本书共分为...

    完全手册:ASP.net Ajax电子教程-part2

    全书从易到难、由浅入深、循序渐进系统地介绍了ASP.NET AJAX(C#)知识点和基于AJAX的Web应用系统的开发技术。全书通俗易懂,大量的实例供读者更加深刻地巩固所学习的知识,使读者更好地进行开发实践。. 本书共分为...

    asp.net网页即时通

    采用asp.net,Ajax技术实现的网页即时通程序

    Ajax 实现在WebForm中拖动控件并即时在服务端保存状态数据 (Asp.net 2.0)\Ajax 实现在WebForm中拖动控件并即时在服务端保存状态数据 (Asp.net 2.0).rar

    Ajax 实现在WebForm中拖动控件并即时在服务端保存状态数据 (Asp.net 2.0)\Ajax 实现在WebForm中拖动控件并即时在服务端保存状态数据 (Asp.net 2.0).rar

    asp.net+ajax在线客服系统,一对多

    采用.net2.0+ajax , 在研究的那段时间,我一直想尝试服务器推,可是没弄好,本即时对话聊天还是采用的ajax轮询, 一对多的关系, 这个功能系统只是根据需要研究之余的衍射产品,在实际应用中会有信息延时的情况...

    ASP.NET与AJAX深度剖析范例集_卷2(源代码)

    ASP.NET与AJAX深度剖析范例集 的随书代码 书的目录如下: 目录 第1章 构建自己的网站 第2章 Visual Studio 2005的重要改变 第3章 ASP.NET 2.0新功能剖析 第4章 数据库访问机制的重大变革 第5章...

    ASP.NET基于BS方式的即时通讯软件的设计与实现(源代码+毕设).rar

    使用最新的Ajax技术,使其非常快,无需等待页面的刷新,实现了即时通讯的功能。 在系统设计与建模过程中,使用了UML和面向对象的分析、设计方法,本系统基于.NET Framework 1.1,使用Visual Studio .NET 2003作为...

Global site tag (gtag.js) - Google Analytics