Vorrei suggerire di utilizzare questo approccio:
- fare uno script server che serve l'applicazione, è possibile utilizzare PHP. Questo è il metodo preferito, ma puoi restare con il server java.
- Rendi il tuo server in ascolto su una porta specificata (se hai scelto java) o avvia il server web se usi la versione HTTP.
- L'app è chi deve avviare la comunicazione, non viceversa.
Se si desidera utilizzare il server HTTP, è necessario conoscere JSON o qualsiasi tecnica AJAX.
Se si bastone con il server Java si può decidere di implementare qualcosa di simile:
- vostri server attende una connessione, per esempio sulla porta 9999.
- L'applicazione invia un pacchetto di sincronizzazione tramite
ObjectOutputStream
per consentire al server di sapere che un cliente desidera informazioni.
- Il server invia le informazioni attraverso lo stesso
socket
.
- Il client lo ripete tutte le volte che è necessario.
Un cliente potrebbe assomigliare a questo:
public class Client {
public void retrieveData() {
ResponseObject response = null;
try {
Socket socket = new Socket("host", 9999);
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(criterio);
oos.close();
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
Response response = (Response) ois.readObject();
socket.close();
} catch (IOException e) {
System.out.println("Error: "+e.getMessage());
}
System.out.println("Response was: "response.toString());
}
}
e un server in questo modo:
public class Server {
public void startServer() {
ServerSocket serverSocket = new ServerSocket(9999);
ExecutorService service = Executors.newFixedThreadPool(MAX_THREADS);
while (true) {
try {
servicio.submit(new Receiver(serverSocket.accept()));
} catch (IOException e) {
System.out.println("Error: "+e.getMessage());
}
}
serverSocket.close();
}
public class Receiver implements Callable<Object> {
Socket socket;
Receiver(Socket socket) {
this.socket = socket;
}
public Object call() {
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
Object clientData = ois.readObject();
ois.close();
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(...); /* Your response goes here */
oos.close();
socket.close();
return null;
}
}
}
sentito parlare di jms? –
JMS potrebbe non essere supportato in Android. Guardando ActiveMQ, qualche idea? – Soumya
C'è un motivo specifico per cui vuoi spingere? E "RealTime" è un po 'ampio. Quali sono i requisiti esatti in tempo reale? Hai mai pensato alle normali vecchie prese? – Fildor