Как использовать сокет в Android, чтобы получить ответ JSON от REST Api, чтобы динамически раздувать просмотрщик? - PullRequest
0 голосов
/ 02 мая 2018

Я занимаюсь разработкой приложения для Android для создания форума для общения между определенной группой пользователей. Я использую PHP Laravel в качестве бэкэнда и общение через вызовы API.
Я использовал вызовы API REST для публикации данных на моем сервере, получения опубликованных разговоров и их раздувания с использованием функции recyclerview.
Все работает нормально, но я хочу, чтобы динамически обновлял данные в режиме повторного просмотра при обновлении базы данных новыми данными, чтобы пользователь мог видеть новые данные без обновления страницы.
В принципе, я не хочу каждый раз вызывать API, чтобы раздуть представление переработчика.

Во время просмотра я получил подсказку использовать Socket как , потому что мы можем держать соединение открытым, в отличие от вызовов HTTP REST API, которые завершаются после ответа .
Но я не знаю, как совместить Socket с вызовами REST API.

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Я получил то, что хотел, используя Firebase, а не Socket.
Я следовал за этими шагами.

  1. Я разместил данные из Laravel Backend в базе данных Firebase как ответ в Как разместить данные в Firebase с использованием PHP? .
  2. Я получил эти данные в своем приложении для Android, используя этот код

    progressDialog.setMessage("Loading...");
    showDialog();
    databaseReference.child("root_id").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) 
     {
            forumlist.clear();               
            int l = (int) dataSnapshot.child(msgid).getChildrenCount();               
            for(DataSnapshot uniqueKeySnapshot : dataSnapshot.child(msgid).getChildren()){
               ForumSubData subData = uniqueKeySnapshot.getValue(ForumSubData.class);
                forumlist.add(subData);
            }
                recyclerView.setAdapter(mAdapter);
                mAdapter.notifyDataSetChanged();
        }
            hideDialog();
        }
    
        @Override
        public void onCancelled(DatabaseError databaseError) {
            hideDialog();
        }
    });
    
0 голосов
/ 03 мая 2018

Всякий раз, когда данные в БД изменяются, вам нужно передавать их через сокет, а когда вы получаете, вам нужно снова вызывать сервис, чтобы обновить мнение переработчика. Для этого используйте socket.io и node.js.

Посетите следующие ссылки:

https://socket.io/

https://socket.io/blog/native-socket-io-and-android/

https://socket.io/docs/server-api/

https://github.com/socketio/socket.io

https://www.npmjs.com/package/socket-io-server

Эти ссылки содержат информацию, документацию и реализацию с примерами от настройки сервера до получения ответа на Android.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...