Strumenti Utente

Strumenti Sito


programmazione:idee:web:spa_websocket

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
programmazione:idee:web:spa_websocket [23/09/2026 16:06] – Fabio Di Matteoprogrammazione:idee:web:spa_websocket [23/09/2026 16:26] (versione attuale) – Fabio Di Matteo
Linea 18: Linea 18:
 <note tip>Nell'esempio si crea un' insolita app desktop che usa il browser web per mostrare la sua interfaccia grafica, non è pensata per uso in rete, resta in ascolto su localhost. Le pagine hanno un pin casuale per garantire un minimo di sicurezza interna. </note> <note tip>Nell'esempio si crea un' insolita app desktop che usa il browser web per mostrare la sua interfaccia grafica, non è pensata per uso in rete, resta in ascolto su localhost. Le pagine hanno un pin casuale per garantire un minimo di sicurezza interna. </note>
 Il server è un server websocket, possiede una funzione che fa da router dei pacchetti json in arrivo dal client e alcune funzioni che fanno da helper per la creazione di pacchetti json da inviare al client. Il server è un server websocket, possiede una funzione che fa da router dei pacchetti json in arrivo dal client e alcune funzioni che fanno da helper per la creazione di pacchetti json da inviare al client.
 +
 +Esempio di router lato server:
 +<code c++>
 +void router(crow::websocket::connection& conn, const std::string& data,const std::string& pin)
 +{
 +    
 +    auto json = crow::json::load(data);
 +    std::string op=json["op"].s();
 +    std::string file=json["file"].s();
 +    const std::string npin =json["pin"].s();
 +
 +    disable(conn,pin, "btn_convert");
 +    if (npin!=pin)
 +    {
 +        fmt::println("Invalid pin");
 +        write_html(conn,pin, "output", "Your pin is wrong!");
 +        return; 
 +    }
 +    
 +    if (op=="h264")
 +    {
 +        std::string msg = fmt::format("Si richiede di convertire il file {} in {}",file,op);
 +        write_html(conn,pin, "output", msg);
 +    }else{
 +        write_html(conn,pin,"output","Error! The request operation is wrong!");
 +    }
 +    enable(conn,pin, "btn_convert");
 +}
 +
 +
 +</code>
 +
 +**Esempio di funzioni helper**
 +<code c++>
 +
 +void disable(crow::websocket::connection& c, const std::string& pin ,const std::string& id)
 +{
 +    crow::json::wvalue json;
 +    json["action"]= "disable";
 +    json["id"]= id;
 +    json["pin"]=pin;
 +    c.send_text(json.dump());    
 +}
 +
 +void enable(crow::websocket::connection& c, const std::string& pin ,const std::string& id)
 +{
 +    crow::json::wvalue json;
 +    json["action"]= "enable";
 +    json["id"]= id;
 +    json["pin"]=pin;
 +    c.send_text(json.dump());    
 +}
 +
 +void write_html(crow::websocket::connection& c, const std::string& pin ,const std::string& id, const std::string& html)
 +{
 +    crow::json::wvalue json;
 +    json["action"]= "write_html";
 +    json["id"]= id;
 +    json["html"]=html;
 +    json["pin"]=pin;
 +    c.send_text(json.dump());    
 +}
 +
 +
 +
 +</code>
programmazione/idee/web/spa_websocket.1790172419.txt.gz · Ultima modifica: 23/09/2026 16:06 da Fabio Di Matteo