Мне нужно реализовать веб-сокет в моем приложении android. Я использую Socket.io для этой цели
Моя задача - когда мое приложение запускается, мне нужно вызвать Socket.emit для получения статуса обновления пользовательского объекта, который уже вошел в систему, и я нужно вызвать Socket. Так я могу получать каждый раз, когда сервер pu sh что-то после изменения в User Object. мой код
SocketIo.class
public class SocketIO {
private static Socket socketIO;
private SocketIO() {
} //private constructor.
public static Socket getInstance() {
if (socketIO == null) { //if there is no instance available... create new one
// socketIO = new SocketIO();
try {
socketIO = IO.socket("https://stay-safe-api.azurewebsites.net/");
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
return socketIO;
}
}
MainActivity.class
onCreate{
SocketIO.getInstance().emit("online", json);
SocketIO.getInstance().on("refresh_user_data", onNewMessage);
SocketIO.getInstance().connect();
}
private Emitter.Listener onNewMessage = new Emitter.Listener() {
@Override
public void call(final Object... args) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.e("onNewMessage:- ", args[0].toString()); //Log to check incoming message
try {
object = new JSONObject(args[0].toString());
Gson gson = new Gson();
RegisterData updatedUserInfo = gson.fromJson(String.valueOf(object),
RegisterData.class);
Constant.userInfo = updatedUserInfo;
Toast.makeText(MainActivity.this, Constant.userInfo.getHealthScore() + "",
Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
};
Проблема возникает в первый раз, когда приложение открывается, я получил данные в Listener и делаю мой функционал. Но когда сервер помещает некоторые данные в этот сокет для клиентской стороны, мой сокет не работал. он обновляется только тогда, когда я уничтожаю свое приложение и открываю его снова. Это означает, что Emit.Listener работает только в первый раз.
Я просто новичок в этом и не знаю, что я делаю не так и что мне делать. Если у вас есть какой-либо образец проекта, который постоянно прослушивает серверную часть моего приложения всякий раз, когда сервер отправляет какие-либо данные, поэтому я обновляю пользовательский интерфейс своего мобильного приложения, а затем дайте мне знать или любой рабочий проект сокета.