Italian Risposta dal server Http

Lello1964

Well-Known Member
Licensed User
Longtime User
Chi mi trova il problema ?

 

Star-Dust

Expert
Licensed User
Posta un esempio, nel pomeriggio lo guardo.
 

Lello1964

Well-Known Member
Licensed User
Longtime User
Allego ii due progetti Server e Client
 

Attachments

  • ClientTest.zip
    3.2 KB · Views: 106
  • ServerTest.zip
    4.1 KB · Views: 99

Star-Dust

Expert
Licensed User
Call sub probabilmente non viene chiamata perché non esiste nel modulo di servizio. Prova a creare una sub con quel nome (RispostaHttp)
Seconda cosa se metti un wait for all'interno dell'Hendle va al livello superiore quindi come se chiude e prosegue avanti prosegue avanti, non credo sia una buona idea. Credo che invece tu volessi mantenere in attesa.

Comunque ho dato uno sguardo superficiale, dopo gli do un occhiata migliore
 

Lello1964

Well-Known Member
Licensed User
Longtime User
Se lo provi in debug (il server), vedrai che la call sub viene chiamata correttamente e la sequenza si ferma, il problema è che senza debuggare, comunque il client riceve un risposta vuota.
Se invece del wait for utilizzi una sub che ferma il tutto, ad esempio mettendo uno sleep(6000), il tutto funziona.
Io ho bisogno di fermare dopo il POST, fare delle verifiche e dare l'esito al client.

Ho fatto una marea di prove, ma credo sia un problema della libreria.
 

Lello1964

Well-Known Member
Licensed User
Longtime User
Comunque io non richiamo la callsub, ma utilizzo RispostaHttp nel wait per fermare il tutto, quando si preme il bottone Button1, viene chiuso il wait for RispostaHttp.
 

Lello1964

Well-Known Member
Licensed User
Longtime User
Se provi mettendo il punto di intettuzione sul wait for RisposytaHttp del servizio ServerHttp, vedrai che si ferma e attende, poi premi il bottone Button1 (click) sul server, viene chiamata la callsub, la procedura prosegue e invia la risposta con response.SendString, ma il tutto era già concluso in quanto il cient ha ricevuto già una stringa vuota.


????
 

Star-Dust

Expert
Licensed User
Comunque io non richiamo la callsub, ma utilizzo RispostaHttp nel wait per fermare il tutto, quando si preme il bottone Button1, viene chiuso il wait for RispostaHttp.
I Debug le cose avvengono più lentamente, il release è un altra cosa.
Se usi websocket è meglio, cosi la connessione rimane aperta. E la risposta la mandi direttamente dal bottone usando la variabile che è dichiarata all'interno del servizio e non dall'Handle del servizio.
Ma ricevi una sola richiesta a volta?
Hai il tempo di dare l'ok col bottone per ogni richiesta?
 

Star-Dust

Expert
Licensed User
Se provi mettendo il punto di intettuzione sul wait for RisposytaHttp del servizio ServerHttp, vedrai che si ferma e attende, poi premi il bottone Button1 (click) sul server, viene chiamata la callsub, la procedura prosegue e invia la risposta con response.SendString, ma il tutto era già concluso in quanto il cient ha ricevuto già una stringa vuota.


????
E' una soluzione arrangiata, che vuoi ottenere di preciso?
 

Lello1964

Well-Known Member
Licensed User
Longtime User
Ho bisogno che il client riceva una riposta da una sub, ma non riesco a evitare che il client abbia una risposta vuota.
 

Star-Dust

Expert
Licensed User
Da una sub o da un bottone?
Da una sub è facile da un bottone è complicato.
La sub risponde in tempi ristretti, il button non lo fa e nel frattempo la connessione si perde, quindi era più adatto il websocket
 

Lello1964

Well-Known Member
Licensed User
Longtime User
Da una sub statica funziona, ma se deve attendere un risultato da un evento esterno, non ci riesco.
 

Star-Dust

Expert
Licensed User

Lello1964

Well-Known Member
Licensed User
Longtime User
In pratica, tu mi fai la richiesta di incassare, devo verificare che la cosa sia possibile e ti do l'ok.
Con il TCIP e in seriale tutto ok, ma con HTTP Server non trovo il modo.
 

Star-Dust

Expert
Licensed User
In pratica, tu mi fai la richiesta di incassare, devo verificare che la cosa sia possibile e ti do l'ok.
Con il TCIP e in seriale tutto ok, ma con HTTP Server non trovo il modo.
Si ho capito. O fai il webSocket oppure direttamente ti costruisci il server.
Prendi un esempio di server di chat per B4A e lo modifichi. Quelli tengono la connessione aperta continuamente.
 

Star-Dust

Expert
Licensed User
htttpserver, appena ricevuto il GET o POST, manda la risposta e disconnette il client che dovrà frare una successiva richiesta GET o POST per ricollegarsi.
Mentre websocker o usando porte in ascolto (come in una chat)la connessione rimane aperta finché tu non la chiudi.
 

Star-Dust

Expert
Licensed User
Vedi questo.

Comunque fare un server da zero in B4A non è complicatissimo
 

Lello1964

Well-Known Member
Licensed User
Longtime User
Erel dice :

There is no server side implementation of WebSockets for B4A.

I recommend you to use MQTT instead.

 

Star-Dust

Expert
Licensed User
Erel dice :

There is no server side implementation of WebSockets for B4A.

I recommend you to use MQTT instead.

Non esiste un implementazione di websocket server in b4a, ma non è che non si può fare.
 
Top