每分钟向服务器发送数据(用于检查状态用户)
send data to server every minute (For check status user)
对于检查状态用户,我应该使用 retrofit2 每 5 分钟向服务器发送一些数据。
当然,当用户在应用程序中时应该发送此信息
这意味着当用户离开应用程序时,无需向服务器发送内容
最好的方法是什么?
为了连接到服务器,我使用 retrofit2。
您可以在服务中编写此代码,并使用处理程序或 RxJava 每 5 分钟进行一次网络调用;
public class YourService extends Service{
public final Handler handler = new Handler();
@Override
public void onCreate() {
makeCallEvery5Min();
}
private void makeCallEvery5Min(){
runnable = new Runnable() {
@Override
public void run() {
// execute call here
}
handler.postDelayed(runnable, delay);
}
}
}
RXJava
private void makeCallEvery5min() {
Observable.interval(0, 5, TimeUnit.MINUTES)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(v -> your_network_call() );
}
下面的方法可以帮到你
如果用户已登录,应该有用户 ID。
现在尝试在用户登录会话中检查特定用户的用户 ID。
注意:以下代码需要在网页中添加(jsp或servlet)--.
- Single User Approach:if(userId==Session.getUserId(userId)){response.refresh(5);//编写代码使用retrofit2向服务器发送数据。}
- MultiUser Approach: multiple users log in.if(Session.getUsers()!=null){response.refresh(5);//使用retrofit2编写代码将数据发送到服务器}
一种解决方案是使用 Android 的工作管理器通过 http 请求对您的服务器执行 ping 操作。您可以在用户登录时创建初始 OneTimeWorkRequest,并在每次执行时创建一个延迟 5 分钟的新 OneTimeWorkRequest。当用户退出应用程序时取消所有工作请求。
查看 Jetpack 库:https://developer.android.com/topic/libraries/architecture/workmanager
您需要更改体系结构的另一种解决方案是将套接字与 SocketIO 等库一起使用。当用户登录通知服务器用户在线时,从您的应用程序连接套接字。当套接字断开服务器可以将用户标记为离线时:https://socket.io/blog/native-socket-io-and-android/
另一种解决方案是将 Firebase 实时数据库用于状态系统。 Firebase 有一个很好的例子来说明如何做到这一点:https://firebase.googleblog.com/2013/06/how-to-build-presence-system.html
对于检查状态用户,我应该使用 retrofit2 每 5 分钟向服务器发送一些数据。
当然,当用户在应用程序中时应该发送此信息
这意味着当用户离开应用程序时,无需向服务器发送内容
最好的方法是什么?
为了连接到服务器,我使用 retrofit2。
您可以在服务中编写此代码,并使用处理程序或 RxJava 每 5 分钟进行一次网络调用;
public class YourService extends Service{
public final Handler handler = new Handler();
@Override
public void onCreate() {
makeCallEvery5Min();
}
private void makeCallEvery5Min(){
runnable = new Runnable() {
@Override
public void run() {
// execute call here
}
handler.postDelayed(runnable, delay);
}
}
}
RXJava
private void makeCallEvery5min() {
Observable.interval(0, 5, TimeUnit.MINUTES)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(v -> your_network_call() );
}
下面的方法可以帮到你
如果用户已登录,应该有用户 ID。
现在尝试在用户登录会话中检查特定用户的用户 ID。
注意:以下代码需要在网页中添加(jsp或servlet)--.
- Single User Approach:if(userId==Session.getUserId(userId)){response.refresh(5);//编写代码使用retrofit2向服务器发送数据。}
- MultiUser Approach: multiple users log in.if(Session.getUsers()!=null){response.refresh(5);//使用retrofit2编写代码将数据发送到服务器}
一种解决方案是使用 Android 的工作管理器通过 http 请求对您的服务器执行 ping 操作。您可以在用户登录时创建初始 OneTimeWorkRequest,并在每次执行时创建一个延迟 5 分钟的新 OneTimeWorkRequest。当用户退出应用程序时取消所有工作请求。
查看 Jetpack 库:https://developer.android.com/topic/libraries/architecture/workmanager
您需要更改体系结构的另一种解决方案是将套接字与 SocketIO 等库一起使用。当用户登录通知服务器用户在线时,从您的应用程序连接套接字。当套接字断开服务器可以将用户标记为离线时:https://socket.io/blog/native-socket-io-and-android/
另一种解决方案是将 Firebase 实时数据库用于状态系统。 Firebase 有一个很好的例子来说明如何做到这一点:https://firebase.googleblog.com/2013/06/how-to-build-presence-system.html