Page 1 of 1

Servidor WEB

PostPosted: Sun Jul 03, 2022 6:22 pm
by Mike Serra
Buenas tardes foro:

Necesito crear un servidor web en Harbour + FW, al cual, se le pueda enviar un fichero JSON desde una appweb escrita en Laravel y éste a su vez sea capaz de procesar ese fichero JSON y devolver una determinado fichero en PDF. He estado revisando mucho código fuente, pero estoy un poco perdido. Podríais indicarme algun ejemplo por donde pueda empezar?.

Muchas gracias de antemano.

Re: Servidor WEB

PostPosted: Sun Jul 03, 2022 8:12 pm
by cnavarro
Esta es la primera opcion que deberías valorar, aunque hay otras posibilidades
https://github.com/harbour/core/tree/ma ... ib/hbhttpd
Esta contrib te crea un servidor web, que atiende las peticiones que hagas
A partir de ahí, lo que hagas con el JSON o datos recibido en tu petición .......
Cualquier cosa, grita :D

Re: Servidor WEB

PostPosted: Sun Jul 03, 2022 11:31 pm
by Antonio Linares
Mike,

Si no necesitas soporte https de momento y te vale solo con http, en la versión de FWH 22.06 se incluye un servidor web muy simple de usar (usa threads) que te permitiría atender las peticiones que le hagas. Asi que desde tu propia aplicación en FWH podrias solucionar facilmente lo que necesitas.

Para que veas su simplicidad, se arranca así: hb_threadStart( @WebServer() )

y la función WebServer() no puede ser más simple:
Code: Select all  Expand view
function WebServer()

   local oServer := HbWebServer()

   oServer:bOnGet = { | cF, cR | WndMain():Html( cF, cR ) }
   oServer:Run()

return nil  
 

Re: Servidor WEB

PostPosted: Sun Jul 03, 2022 11:37 pm
by Antonio Linares
Mike,

Por cierto, como comentaste hace poco que necesitabas usar web sockets, comentarte que en la versión de FWH 22.06 también se ha incorporado ya el servidor de web sockets, con un uso también muy simple:

También lo arrancas como thread: hb_threadStart( @WSServer(), oWndChild )

y la función WSServer() mira lo sencilla que es:
Code: Select all  Expand view
function WSServer( oWndChild )

   local oWebSocketServer := TWebSocketServer()

   USE Customer SHARED
   hb_DbDetach( "customer" )
   
   oWebSocketServer:bOnRequest = { | cRequest, cRet | hb_DbRequest( "CUSTOMER" ),;
                                                      If( cRequest == "prev", DbSkip( -1 ), DbSkip() ),;
                                                      cRet := customer->first,;
                                                      hb_DbDetach( "CUSTOMER" ), cRet }

   oWebSocketServer:Run()

return nil  

 

Re: Servidor WEB

PostPosted: Mon Jul 04, 2022 6:32 am
by Mike Serra
Buenos días y gracias Cristobal / Antonio:

Comenzaré por la contribución. Antonio, es verdad que hace poco estuve tanteando el tema de los websockets, pero el grupo de compañeros que desarrollan el lado web me comentaron que lo tengamos como opción B. Voy a ver como trincho el pavo.

Muchas gracias.