我现在使用基于c#的asp.net编程,想实现一个聊天系统,可以显示在线人数,当用户不是正常退出(正常退出我设置了一个button控件可以改变数据库中的数据),而是关闭浏览器时能在数据库中改变其登录状态设置为不在线。
希望大家帮帮忙 感激不尽

解决方案 »

  1.   

    JS上有一个事件,是关闭时激发的,通过AJAX,关闭时激发,然后处理相应程序,但还是有一个问题,就是即使是这样,有时,JS还是不能激发(多种情况造成)。
      

  2.   

    把session过期设短点(比如1分钟)
    如果用户session丢失了,是不是就可以-1了呢。另外在线人数不必频繁读取数据库吧
      

  3.   

       window.onbeforeunload = onbeforeunload_handler;
            function onbeforeunload_handler() {
                var n = window.event.screenX - window.screenLeft;
                var b = n > document.documentElement.scrollWidth - 20;
                if (b && window.event.clientY < 0 || window.event.altKey) {
                    alert("退出系统?");
                    (document.getElementById("lbtn_close")).click();
                    window.event.returnValue = ""; //这里可以放置你想做的操作代码  这个是用js代码触发一个按钮的事件.
    有一个问题就是右键关闭窗口的时候不会触发事件.
    还有关闭的时候有提示.
      

  4.   

    b/s下不建议做这种功能。b/s是基于请求和响应的,没有请求怎会有响应呢。客户端是有一个close,可是在刷新时也会触发。在线人数一般还是用session,不需要实时。
      

  5.   

    可以在服务器端编写个WINFORM程序检测用户在线状态,如果长时间没更新,可以清空他的登录信息
      

  6.   

    window.onbeforeunload = function() {
      event.returnValue = "确定要离开聊天室么?";
    }
    如果退出,可以Ajax发送一个退出请求!如果强制结束进程,那没办法的[align=center]*****************************************
    本内容使用CSDN小秘书回复
    每天回帖即可得10分可用分!
    *****************************************[/align]