elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  ejemplitos web
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ejemplitos web  (Leído 2,612 veces)
sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
ejemplitos web
« en: 8 Octubre 2022, 20:47 pm »

teoria

esta es la teoria que el sapo usa para impresionar y dar consultoria a los consultores de software
y a los arquitectos (el programador que no programa y que solo vende humo lo siento tenia que decirlo)
para que cobren precios obsenos a los clientes para pagar los salarios obsenos de la gente de ti


protocolo
conjunto de reglas para establecer una comunicacion

protocolo web
son los protocolos que fueron creados para los browser(chrome ,firefox,opera,internet explorer)


tipos de comunicacion
fullduplex vidirecional
unidrecional vidirecional

protocolo web
   fullduplex -> websocket
   halfduples -> sse esta abilitado para enviar el proceso de una peticion
              http no esta abilitado para enviar el proceso de una peticion

protocolos sobre web
   stomp es un protocolo que corre sobre websocket
   rest es una pequeña capita ensima de http
   soap es lo mismo que rest pero mal echo solo funciona con xml con una estructura predifinida
      y puede o no trabajar sobre protocolo web a los arquitectos les guta usar
      para vender software mas "enterprise" y para perder el tiempo creando gigantesco archivos de configuracion en xml
      
      
y el sapo que protocolo te recomienda para cada caso de uso
   si quieres un chat multi room webosocket o stomp
   si quieres enviar notificaciones de progreso del estilo procesando 10% 20% 30% ....
   usa sse
   si quieres hacer ajax para que tu formulario tenga refresco parcial y no tenga que rellenar el formulario osea una aplicacion web estilo erp inventario facturacion
   usa http con un poquito de cariño de javascript
   soap es para amargarse la vida o para cobrar por horas
   pizarron colaborativo o paint colaborativo stomp o webscoket
   
   
apliacion en spring boot
   para http se usa la paqueteria de rest y las anotoaciones restcontroller o controller
   para soap ya ni me acuerdo me da ansiedad usa google "soap spring boot" y porfavor no obliges a los programadores a usar xml a mano
   para sse se usa webflux o sseemiter
   para websocket se usa TextWebSocketHandler
   para stomp se usa la anotacion MessageMapping

la aplicacion en javascript
   para http usa jquery o XMLHttpRequest(no necesita libreria) o cualquier libreria de moda axios
   para soap se usa lo mismo pero usualmente no se usa mucho en javascript mas se usa para comunicarte con otro servidor
   para sse usa EventSource (no necesita libreria)o axio
   para stomp usa la libreria stompjs
   
para tu proyecto solo lo buscas en la cajita del spring initializer XD

y recuerda que puedes acceder que puedes crear apliacion de escritorio o movil o integracion con otro servidor reconoce todos los protocolos web
hay libreria para todo

y si quieres hacer un tostadora smart y no se puede con protocolo web usa mqqt es tema aparte


ya les paso codigo de ejemplo mas rato pero estoy trabajando no se por que me pagan

 
Código
  1. package com.example.demo;
  2.  
  3.  
  4. import java.util.UUID;
  5. import java.util.concurrent.ExecutorService;
  6. import java.util.concurrent.Executors;
  7.  
  8. import org.springframework.http.HttpStatus;
  9. import org.springframework.http.ResponseEntity;
  10. import org.springframework.web.bind.annotation.GetMapping;
  11.  
  12. import org.springframework.web.bind.annotation.RestController;
  13. import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
  14. import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
  15. import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
  16.  
  17. @RestController
  18.  
  19. public class ProgresController {
  20.  
  21.   ExecutorService nonBlockingService = Executors.newCachedThreadPool();
  22.  
  23.    @GetMapping("rbe")
  24.    public  ResponseBodyEmitter   handleRbe() {
  25.        ResponseBodyEmitter emitter = new ResponseBodyEmitter();
  26.        nonBlockingService.execute(() -> {
  27.                try {
  28.                 for(int c=0;c<30;c++) {
  29.                  emitter.send("rbe" );
  30.                  Thread.sleep(150);
  31.                 }
  32.  
  33.                    emitter.complete();
  34.                } catch (Exception ex) {
  35.  
  36.                      emitter.completeWithError(ex);
  37.                }
  38.            });
  39.  
  40.            return emitter;
  41.        }
  42.  
  43.    @GetMapping("sse")
  44.    public SseEmitter handleSse() {
  45.        SseEmitter emitter = new SseEmitter(1000l*5*60 );
  46.  
  47.        UUID randomUUID = UUID.randomUUID();
  48.        nonBlockingService.execute(() -> {
  49.            try {
  50.             for(int c=0;c<20;c++) {
  51.             emitter.send("sse "+c+" "+randomUUID);
  52.             Thread.sleep(100);
  53.             }
  54.  
  55.                emitter.complete();
  56.            } catch (Exception ex) {
  57.  
  58.                emitter.completeWithError(ex);
  59.            }
  60.        });
  61.  
  62.        return emitter;
  63.    }
  64.    @GetMapping("srb")
  65.    public ResponseEntity<StreamingResponseBody> handlesrb() {
  66.        StreamingResponseBody stream = out -> {
  67.            String msg = "srb";
  68.            try {
  69.             for(int c=0;c<20;c++) {
  70.                 out.write(msg.getBytes());
  71.                 Thread.sleep(100);
  72.                }
  73. } catch (Exception e) {
  74.  
  75. }
  76.  
  77.  
  78.        };
  79.        return new ResponseEntity(stream, HttpStatus.OK);
  80.      }
  81. }
  82.  


Código
  1.  
  2. <button id="btnclose">close sse</button>
  3.  
  4. <h1>holis</h1>
  5. <span  id="log"></span>
  6. <div id="rbe"></div>
  7.    <div id="sse"></div>
  8.    <div id="srb"></div>
  9.  
  10.  
  11. var xhr = function(url) {
  12.    return new Promise(function(resolve, reject) {
  13.      try {
  14.        var xmhr = new XMLHttpRequest();
  15.        //Listen for API Response
  16.        xmhr.onreadystatechange = function() {
  17.          if (xmhr.readyState == XMLHttpRequest.DONE && xmhr.status == 200) return resolve(xmhr.responseText);
  18.        };
  19.        //Open connection
  20.        xmhr.open("GET", url, true);
  21.        //Additional headers as needed
  22.        //x.withCredentials = true;
  23.        //x.setRequestHeader("Accept", "application/json");
  24.        //x.setRequestHeader("Content-Type", "text/plain");
  25.        //Perform the actual AJAX call
  26.        xmhr.send();
  27.      } catch (ex) {
  28.        reject("Exception: Oh CORS's you've made a mistake!");
  29.      }
  30.    });
  31.  };
  32.  
  33.  
  34. xhr('http://localhost:8080/rbe').then(function(success){
  35.    var el = document.getElementById('rbe');
  36.    el.appendChild(document.createTextNode(success));
  37.    el.appendChild(document.createElement('br'))
  38.  });
  39.  /**
  40.   * SSE
  41.   */
  42. var sse = new EventSource('http://localhost:8080/sse');
  43.  sse.onmessage = function (evt) {
  44.    var el = document.getElementById('sse');
  45.    el.appendChild(document.createTextNode(evt.data));
  46.    el.appendChild(document.createElement('br'))
  47.  };
  48.  sse.onerror=function(evt){
  49.  sse.close();
  50.  }
  51.  /*
  52.   * SRB
  53.   */
  54.  xhr('http://localhost:8080/srb').then(function(success){
  55.    var el = document.getElementById('srb');
  56.    el.appendChild(document.createTextNode(success));
  57.    el.appendChild(document.createElement('br'))
  58.  });
  59.  
  60.  
  61.  document.getElementById("btnclose").onclick=function(){
  62.  sse.close();
  63.  }
  64. </script>
  65. </body>
  66. </html>
  67.  


« Última modificación: 8 Octubre 2022, 22:11 pm por sapito169 » En línea

#!drvy


Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: ejemplitos web
« Respuesta #1 en: 9 Octubre 2022, 10:00 am »

??????

Saludos


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines