
Integración de apex más node js Parte 3
¡Por fiiiin amigos! ha llegado la hora de conectar socket io desde node con apex, mi parte favorita porque es la que más le gusta a los usuarios. En fin, te sugiero veas el vídeo y aquí te dejo el código usado en el vídeo y la app para que no tengas ningún problema al usarla y analizarla.
¡NO OLVIDES CREAR EL ACL!
Javascript
var socket = io('//localhost:3002'); socket.on('connect', function(){ console.log('Cliente conectado') }); socket.on('mensaje', function(res){ console.log('API NODE ' , res); newUser(); }) function newUser(){ apex.server.process( 'GuardarDatosDePstgresql', // Process or AJAX Callback name {}, // Parameter "x01" { success: function (pData) { // Success Javascript var region = apex.region( "reporte" ); var chart = apex.region("chartusers"); region.refresh(); chart.refresh(); }, dataType: "text" // Response type (here: plain text) } ); //GuardarDatosDePstgresql }
AJAX CALLBACK
declare l_request SYS.utl_http.req; l_response SYS.utl_http.resp; l_download RAW(32767); l_url_o varchar2(4000) := '//localhost:3002/user/'; l_url varchar2(200); l_plain varchar(4000); jo JSON_OBJECT_T; ja JSON_ARRAY_T; keys JSON_KEY_LIST; keys_string VARCHAR2(100); begin l_request := SYS.utl_http.begin_request(l_url_o); SYS.utl_http.set_header(l_request, 'User-Agent', 'Mozilla/5.0 (Windows NT x.y; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0'); l_response := SYS.utl_http.get_response(l_request); LOOP BEGIN SYS.utl_http.read_raw(l_response, l_download); l_plain := UTL_RAW.CAST_TO_VARCHAR2 (l_download) ; for rec IN ( select j.usuario,j.nombre , j.email, j.direccion, j.id from json_table(l_plain,'$[*]' COLUMNS usuario varchar2(255) PATH '$.usuario', nombre varchar2(255) PATH '$.nombre', email varchar2(255) PATH '$.email', direccion varchar2(255) PATH '$.direccion', id number PATH '$.id' ) j ) LOOP insert into usuarios (usuario,nombre,email,direccion,id) values (rec.usuario,rec.nombre,rec.email,rec.direccion,rec.id); END LOOP; commit; EXCEPTION WHEN SYS.utl_http.end_of_body THEN EXIT; END; END LOOP; SYS.utl_http.end_response(l_response); end;
CREAR ACL
DECLARE l_acl VARCHAR2(100) := 'apinodejs.xml'; l_desc VARCHAR2(100) := 'descripción del acl'; l_principal VARCHAR2(30) := 'APEXDEVELOPERS'; -- EN MAYÚSCULAS l_host VARCHAR2(100) := 'localhost'; --nombre del host BEGIN -- Crea el nuevo ACL -- Proveer privilegios de conexión dbms_network_acl_admin.create_acl(l_acl, l_desc, l_principal, TRUE, 'connect'); -- Permisos de resolución de DNS dbms_network_acl_admin.add_privilege(l_acl, l_principal, TRUE, 'resolve'); -- Pasamos lo parámetros nombre del acl y host dbms_network_acl_admin.assign_acl(l_acl, l_host); COMMIT; END; / SELECT host, lower_port, upper_port, acl FROM dba_network_acls; /
Vídeo
Descarga la app de apex
Link de descarga de la aplicación
Ligas de interés
https://cdnjs.com/libraries/socket.io
https://expressjs.com/en/resources/middleware/cors.html
Post sugerido:
Por favor si te sirvió el vídeo, invítame un café dando clic a los anuncios, me ayuda muchísimo para no dormir y poder hacer más posts