How to continuously check if a user is online (without reloading the page) using Ajax ? It happens sometimes that the user has opened his profile in two different tabs, and he logs out from one of the tab, so the other tab immediately should show the log in page...
2条回答 默认 最新
- dongzaliang4492 2016-03-17 05:10关注
As for checking if the person is online , you can use many technologies like long polling , web socket and simplest one is periodically checking with the server running one script.
For other part it can be done on the server side where you need to maintain some kind of in-memory map (if you have only one webserver otherwise you have to store in the db ) which contains the logged in user id and some random key generated by your client side code whenever some logs in
Map<string,List<string>> tracker = new Map<string,List<string>>();
whenever you log in just that the new random key to the tracker by finding his id in the map
tracker[userId].Add(random);
whenever user logs out from any place clear the tracker key
tracker.remove(userId)
Now as we are making periodic call from AJAX if the tracker map does not contain the userId it means he has logged out from some place.
if(!tracker.Contains(userId)) //user is logged out from some other place
解决 无用评论 打赏 举报
悬赏问题
- ¥16 mybatis的代理对象无法通过@Autowired装填
- ¥15 可见光定位matlab仿真
- ¥15 arduino 四自由度机械臂
- ¥15 wordpress 产品图片 GIF 没法显示
- ¥15 求三国群英传pl国战时间的修改方法
- ¥15 matlab代码代写,需写出详细代码,代价私
- ¥15 ROS系统搭建请教(跨境电商用途)
- ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。
- ¥20 CST怎么把天线放在座椅环境中并仿真
- ¥15 任务A:大数据平台搭建(容器环境)怎么做呢?