我一直在考虑这样做的方法但到目前为止还找不到方法。我希望我的用户能够在许多社交网络中看到彼此在线/离线状态。例如,每个用户的布尔值。 True表示在线,false表示离线。但是什么时候我将该布尔值设置为false?用户关闭应用程序的那一刻似乎是一个很好的时刻,但从我的研究来看,无法保证知道应用程序是否被杀死。
那么,你们如何使用Firebase或自己的服务器或其他任何方式跟踪用户的在线状态。我很好奇
通过在线和离线说,我的意思是如果用户当时正在使用该应用程序。
答案 0 :(得分:0)
Firebase通过特殊的var amOnline = new Firebase('https://<demo>.firebaseio.com/.info/connected');
var userRef = new Firebase('https://<demo>.firebaseio.com/presence/' + userid);
amOnline.on('value', function(snapshot) {
if (snapshot.val()) {
// User is online.
userRef.set(true);
} else {
// User is offline.
// WARNING: This won't work! See an explanation below.
userRef.set(false);
}
});
路径
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver();
internalResourceViewResolver.setViewClass(JstlView.class);
internalResourceViewResolver.setSuffix(".jsp");
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
if(request.getHeader("User-Agent").contains("Internet Explorer")){
internalResourceViewResolver.setPrefix("/WEB-INF/views/legacy/");
} else {
internalResourceViewResolver.setPrefix("/WEB-INF/views/modern/");
}
return internalResourceViewResolver;
}
以下是关于跟踪用户状态的一个很好的解释。 https://firebase.googleblog.com/2013/06/how-to-build-presence-system.html
答案 1 :(得分:-1)
您可以为互联网连接设置监听器。比如检查互联网是否连接。如果没有连接,则将布尔值设置为false,如果连接了互联网,则布尔值为true。看看代码:
ConnectivityManager cm =(ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
if(isConnected)
{
// set your boolean to true
}
if(!isConnected)
{
// set your boolean to false here
}