Sub Server_HandleRequest (Request As ServletRequest, Response As ServletResponse)
Try
If Request.Method = "POST" Then 'User pressed on the Send button
Log("Incasso HTTP in corso ")
CallSubDelayed2(Me, "GestisciRichiesta", Response)
Else
Log("Non è un POST")
End If
Catch
Response.Status = 500
Log("Error serving request: " & LastException)
Response.SendString("Errore server " & LastException )
End Try
End Sub
Private Sub GestisciRichiesta(Response As ServletResponse)
Wait For RispostaHttp (Risposta As String)
Response.SendString(Risposta)
Log("Risposta" & Risposta)
End Sub
Ok. Ci studio un po'.Il tempo può essere anche maggiore di un minuto, se l'utente è nel Setup del rendiresto, non può erogare, ma questo lo potrei gestire io con un timeout, diciamo che passano al massimo due secondi.
Sub Server_HandleRequest (Request As ServletRequest, Response As ServletResponse)
Try
If Request.Method = "POST" Then 'User pressed on the Send button
Log("Incasso HTTP in corso ")
FlgAttesa=True
Dim Risposta As String ="ok"
Attesa
' wait for RispostaHttp (Risposta As String)
' >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> resta in attesa ma chiude comunque la richiesta, non arriva mai quì
Response.SendString(Risposta)
Log("Risposta" & Risposta)
Else
Log("Non è un POST")
End If
Catch
Response.Status = 500
Log("Error serving request: " & LastException)
Response.SendString("Errore server " & LastException )
End Try
End Sub
Sub Service_Destroy
server.Stop
Service.StopForeground(1)
End Sub
Sub Attesa As ResumableSub
Do While 1=1
DoEvents
If FlgAttesa=False Then
Return True
End If
Loop
Return True
End Sub
Sub Button1_Click
ServerHttp.FlgAttesa=False
End Sub
Non funziona, si comporta allo stesso modo, esce, poi esegue la callsub.Prova così:
B4X:Sub Server_HandleRequest (Request As ServletRequest, Response As ServletResponse) Try If Request.Method = "POST" Then 'User pressed on the Send button Log("Incasso HTTP in corso ") CallSubDelayed2(Me, "GestisciRichiesta", Response) Else Log("Non è un POST") End If Catch Response.Status = 500 Log("Error serving request: " & LastException) Response.SendString("Errore server " & LastException ) End Try End Sub Private Sub GestisciRichiesta(Response As ServletResponse) Wait For RispostaHttp (Risposta As String) Response.SendString(Risposta) Log("Risposta" & Risposta) End Sub
(Non ho provato perché ora non ho attivi due Android - se magari il client, solo per prova, lo fai con b4j... è più comodo)
Si, ho seguito il tuo suggeriemento, ma non è deprecated ??Con doevents funzionerà.
È deprecato, infatti volevo trovare una soluzione migliore.Si, ho seguito il tuo suggeriemento, ma non è deprecated ??
Funziona perfettamente, grazie.Con DoEvents funzionerà ma è sbagliato che dichiari la sub ResumableSub
B4X:Sub Attesa Do While FlgAttesa DoEvents Loop End Sub
Può andare in stallo e se c'è una modifica nelle viste potrebbe andare in crash.Funziona perfettamente, grazie.
Ma che problemi mi darà ? visto che Erel dice che è deprecato ?
Con xHttpServer adesso c'è il Websocket anche su b4a e b4iErel dice :
There is no server side implementation of WebSockets for B4A.
I recommend you to use MQTT instead.
how create websocket server to B4A
Hi all You can give me the best way to create a websocket in an android app, which acts as a server, to another android application and b4j. thank in advancewww.b4x.com