저는 택시 앱을 개발했습니다. 나는 5 초마다 위치 업데이트를 위해 안드로이드 앱을 개발했습니다. 현재는 개조를 사용 중입니다. 위치 데이터를 서버에 동기화합니다. 그러나 수천 명의 드라이버가 5 초마다 위치 데이터를 보내고 HTTP 요청을 보내면 데이터를 보내고 닫는 것보다 문제가 발생할 것으로 예상됩니다. TCP/IP 또는 소켓을 사용하여 데이터를 보내려고합니다. 소켓을 열어두고 위치 데이터를 업데이트하고 소켓이 닫히면 자동으로 연결되기를 원합니다. 이 문제와 관련된 포럼에서 도움을 얻지 못했습니다. 도움이 필요하면 어떻게하면 좋을지,이 접근법이 더 낫지 않습니까.안드로이드 앱의 소켓을 통해 매 5 초마다 안드로이드의 실시간 위치 데이터를 동기화하고 싶습니다.
-2
A
답변
0
오히려 소켓 업데이트보다 firebase에도 갈 수 있습니다. 이 위치는 다음과 같은 방법으로 중포 기지에 대한 변경 사항을 밀어 수 있습니다 얻을 때
private FirebaseDatabase database = FirebaseDatabase.getInstance();
private DatabaseReference myRef = database.getReference();
당신이 유일하게 단지 일반 데이터베이스 (예 : ID, UUID)처럼, 행을 식별 할 수있는 데이터베이스에 게시, 그래서 하나를 생성하고 예를 들어 SharedPreferences
에 저장해야합니다.
public void postToDatabase(UserLocation location) {
DatabaseReference usersRef = myRef.child(someUUID);
usersRef.setValue(location);
}
변경 사항을 수신하려면 ValueEventListener
을 구현해야합니다. 예를 들어, 사용자의 요구에 맞게 조정해야합니다.
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot snapshot : dataSnapshot.getChildren()) {
UserLocation location = new UserLocation();
location.setLongitude((String) snapshot.child("longitude").getValue());
location.setLatitude((String) snapshot.child("latitute").getValue());
//Dispatch your changes in application, i.e with and EventBus
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
감사합니다. Chirag. Firebase도 옵션이지만, 우리 서버는 Node.js와 Using Mongodb에서 개발되었습니다. 따라서 Firebase를 사용할 수없는이 프로젝트에서는 데이터를 동기화하기 위해 지속적인 소켓 연결 솔루션이 필요합니다. – YasirSE