为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

两个账号同时登录,后登录的账号将前一个账号挤掉

2018-04-11 2页 doc 12KB 60阅读

用户头像

is_037433

暂无简介

举报
两个账号同时登录,后登录的账号将前一个账号挤掉两个账号同时登录,后登录的账号将前一个账号挤掉 最近有个小项目要求实现相同的账号不能同时登录,如果有两个账号(一样)登录,那么后登陆账号能挤掉前一个账号,像WebQQ那样被挤掉的账号还要有通知。当时首先想到的是有没有一种方法是这样的:一个客户端有一个账号在登录,首先判断该账号是不是已经登录,如果有通知服务器该客户端有同样的账号登录,然后再发消息给另外一个客户端,通知其账号被挤掉。如果没有则正常登录。但是这种方法我不太清楚。后来想到该原理与网站里面的即时消息机制是一模一样的。(可以以博客园为例,我们发一个短消息给另外一个用户,...
两个账号同时登录,后登录的账号将前一个账号挤掉
两个账号同时登录,后登录的账号将前一个账号挤掉 最近有个小项目要求实现相同的账号不能同时登录,如果有两个账号(一样)登录,那么后登陆账号能挤掉前一个账号,像WebQQ那样被挤掉的账号还要有。当时首先想到的是有没有一种方法是这样的:一个客户端有一个账号在登录,首先判断该账号是不是已经登录,如果有通知服务器该客户端有同样的账号登录,然后再发消息给另外一个客户端,通知其账号被挤掉。如果没有则正常登录。但是这种方法我不太清楚。后来想到该原理与网站里面的即时消息机制是一模一样的。(可以以博客园为例,我们发一个短消息给另外一个用户,该用户可以马上收到信息,就是互相通话) 在后来只知道一般这个消息机制是通过不断读取数据库中的数据,例如: 一张表式这样的(自己想的一个非常简单的) MessageID MessageFrom MessageTO MeesageContent MessageRead 1 小明 小芳 “你好” false 2 小芳 小明 “你好” false „ „ „ „ „ „ „ „ „ „ „ „ 那么在客户端我们不断查询数据库 Select * from dt_message where MessageTo=’该用户’ 那么我们可以得到该用户收到的信息了。 这样在这个基础上我想到建立如下图的表: 用户登录的时候我们就会改写该用户对应的UserIP字段,将其值设置为登录用户的客户端IP地址。然后客户端不断地(每隔1秒)向服务器提出请求要求得到UserIP字段,得到的UserIP字段与该客户端IP地址相比较,当不相等时, 就代表该账号在别处登录。那么我们在作出相应的处理,帮该用户注销,并告知他该账号已在别处登录。 当用户关闭所有窗口时,我们可以认为他注销其账号了,可以在global.asax里Application_End事件将数据库里UserIP字段清空(概念错误,这里我原先理解成了是对应的客户端应用程序,这里应该是服务器的最后一个应用程序所以不可能实施,谢谢园友们指点出来)。个人认为没有必要,除非是两个相同账号同一时间不能同时登录,不发生挤账号行为。那么这里才有必要添加,因为IP地址不为空就代表着账号还在登录中,另外一个账号不能登录。若有挤账号则不存在这个问题。 这只是我的想法,如果大家有更好的处理办法,希望给出来。若每个用户每秒向服务器请求一次,可以想想若用户同时在线达到几千会对服务器负载造成多大负担,WebQQ,博客园这样网站的消息机制实现是不是像我上面说的那样,如果是,有没有优化操作,希望园友们能给出自己理解。 程序环境:VS2008+SQL 2005 运行时将Database文件夹里数据库附加到数据库中去。 这里给出我这里实验的例子(注:该程序主要是验证我的猜想,并实挤账号的功能,其余的一切忽略。账号:hu 密码:123) 知识是一点一点积累起的 --小风 Tag标签: 登录
/
本文档为【两个账号同时登录,后登录的账号将前一个账号挤掉】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索