当前位置: 首页 > java >正文

关于WEBQQ的实现(一)

前段时间因为系统的需要,非得要加个消息提醒的通讯的功能。本来最最初是准备用C/S的方式实现的,但考虑到要做客户端,以后维护是一件相当麻烦的事情。对其程序进行任何修改都将要更新每一台机器的程序,而且程序运行还要安装FRAMWORK,以后升级维护都觉得有很多隐患。经过考虑觉得因该和现有系统结合(现有系统是。NET开发的B/S结构),于是萌发了做一个WEBQQ的想法。以前好象在网上有看过一个叫快狗的东西,我觉得别人既然能做我因该也可以做一个类似功能的东西吧。在网上找了一个控件用来做类似QQ的界面,其实可以用树型结构来做的,只是为了看的眩一点,呵呵。
  程序实现以下几个基本功能
1、可以显示在线人员,并既时的反映人员的在线情况,上下线比较迅速的反映出来。
2、可以在不同分组里选择人员发送信息
3、可以消息群发
4、发送的消息要既时的让对放收到。
刚开始做的时候认为功能不对,因该很容易实现,但是实际做的时候才发现在WEB上实现类似功能没有想的那么简单。
  首先是人员在线问题,我的想法是弄一个在线人员表来记录在线人员情况,当有人上线的时候时候就插入信息,下线的时候就删除信息。分组信息(既部门信息)以及人员信息都从现有系统的的表里读取,取取的时候取在线人员表,如果该人在显线则代表人员的图片为亮色,并把顺序提前,否则则为灰色。如下图:


遇到的一个问题是如何既时的获取人员的在线情况,我的方法是用JAVASCRIPT里面的setInterval方法来动态的加载一个JS文件,JS文件是由程页面生成的,他用来判断用户登录时的在线人员表是否和数据库里目前的表内容一致,如果不一致则当前也面重新加载。
 1      < script language = javascript >
 2 <!--
 3 function  cc()
 4 {
 5 document.all.check.src = " checkout2.aspx " ;
 6
 7 }
 8 setInterval( " cc() " , 5000 );
 9
10 // -->
11 </ script >
这样可以在不刷新页面的情况下动态取得人远在线情况
CHECKOUT2。ASPX中判断是否重新加载页面
 1 DataTable dtt = (DataTable)Session[ " online " ];
 2                  if  (dt.Rows.Count == dtt.Rows.Count) 
 3                  {
 4                    foreach(DataRow r in dt.Rows)
 5                    {
 6                        if(dtt.Select("userid="+r["userid"].ToString()).Length<1)
 7                        {
 8                       //Response.Write("<script language=javascript></script>");
 9                            Response.Write("parent.main.location.href='qqmain.aspx';");
10                        Session["online"]=dt;
11                            return;
12                        }

13                    }
    上面完成了人员上线的问题解决方法,下线比较好解决,也是用JAVASCRIPT,在页面的onunload事件中掉用如下方法
 1 < script language = " javascript " >
 2 <!--
 3
 4 function  logout()
 5 {
 6
 7
 8      var  xmlhttp  =   new  ActiveXObject( " MSXML2.XMLHTTP " );
 9     xmlhttp.open( " post " " out.aspx " false );
10     xmlhttp.send( "" );
11     
12
13 }
14 // -->
15      </ script >
该方法是为了在后台调用OUT。ASPX页面,该页面的功能就是将当前用户从在先表中删除
1 string  sql = " delete from user_online where userid=' " + this ._UserID + " ' " ;
2             Data.EditData(sql);
以上就完成了一个WEBQQ基本的上下线功能,哎觉得写文字没有写程序通顺,希望大家能理解我的思路。上面方法其实存在一个问题,就是当用户非法退出的时候删除在线信息的功能可能无发执行(比如浏览器非法操作了),目前的解决方法是在一天中的某个时间段删除一次在线人员表,程序发现当前的在线信息和数据库的信息不一致的时候会自动重新加载一次页面,相当于更新了一次在线人员信息。反正以上方法思路可以保证80%以上有效,如果大家有更好的建议和方法可以告诉我一起交流一下。文字写的不好,多多见谅。下次谈谈如何搞定消息的即时发送和接收的问题。
http://www.xdnf.cn/news/11481.html

相关文章:

  • 一条命令轻松解决 「应用程序 “xxx” 不能打开」的问题
  • 信息检索:搜索引擎---怎样量化评价搜索引擎的结果质量
  • 剑灵南天国服务器位置,剑灵南天国实验室申请地址_剑灵南天国实验室申请资格答案_游戏堡...
  • ios项目icon和default 等相关图标命名规则和大小设置
  • 央视网站“被黑”的技术性分析
  • 500G JAVA视频网盘分享 (JEECG开源社区)
  • HBase 集群问题集 永久RIT(Region-In-Transition)问题
  • APP账号密码传输安全分析
  • 记渣打银行科营中心的面试
  • 【自测】100道linux运维测试题,80分以上就是大神了
  • 【智商都是硬伤】数字逻辑推理题
  • 软考网络工程师总结
  • 部署篇 | MatrixOne与MySQL全面对比
  • 【正点原子FPGA连载】第二章 实验平台简介 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0
  • 思维练习题
  • 2023除夕倒计时~HTML代码
  • 为什么说技术人也要有产品思维
  • 世界主要城市时区表_世界地理第二讲:世界主要地区之亚洲
  • 五笔输入法基础教程
  • 各纬度气候分布图_“极地气候”是高纬度寒冷气候的总称,包括冰原气候和苔原气候...
  • 基于Java开发的个人视频网站的搭建与实现[附源码]
  • scrapy配置多条pipelines存储csv文件,存MySQL数据库
  • 一款漂亮的网址永久发布页源码
  • AI建筑设计教程!15个万能模板,三个步骤让你成为设计师!
  • 四种视频播放器
  • 程序员转行都去干嘛了?产品经理很正常,这位卖烧饼的也太强了_程序员都转行去做什么去了
  • String.format一些用法例子、功能强、希望对您有帮组
  • Skia 编译及踩坑实践
  • 数据合规官 (DCO) 有什么用?企业何时需要数据合规官?
  • 前端之SEO搜索引擎优化