Outils pour utilisateurs

Outils du site


serveur_minitel_web

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
serveur_minitel_internet [2019/06/16 21:13] – créée Mushussuserveur_minitel_web [2020/04/13 12:52] (Version actuelle) Mushussu
Ligne 1: Ligne 1:
 +====== Serveur Minitel web ======
 +
 +===== Openframeworks =====
 +Récupérer la librairie ofxLibwebsockets sur [[https://github.com/robotconscience/ofxLibwebsockets|Github]]. Placer le répertoire décompressé dans le répertoire addons de votre OpenFrameworks.
 +
 +Inclure addon Linux 
 +  sudo nano /home/pi/openFrameworks/apps/myApps/ServeurMinitelWeb/addons.make
 +Inclure dans le fichier :
 +  ofxLibwebsockets
 +Ctrl-O pour sauvegarder et Ctrl-X pour sortir.
 +Installer git :
 +  $ sudo apt-get install git-core
 +Installer cmake :
 +$ sudo apt-get install cmake
 +
 +Installer LibWebSocket :
 +[[serveur_websocket|Installation de LibWebSockets]]
 +
 +
 +Créer un projet avec projectGenerator en incluant l'addon ofxLibwebsockets.
 +
 +Copier les fichiers de données dans le répertoire bin/data de votre projet.
  
  
 Configurer sa box : Configurer sa box :
  
-https://ressources.labomedia.org/labom_yunohost_sur_raspberrypi#si_on_ne_dispose_pas_de_nom_de_domaine_nohostme+[[labom_yunohost_sur_raspberrypi#si_on_ne_dispose_pas_de_nom_de_domaine_nohostme|yunohost sur raspberrypi, si on ne dispose pas de nom de domaine nohostme]] 
 + 
 +LibWebSockets 
 + 
 +[[https://stackoverflow.com/questions/35341871/how-to-solve-the-linking-error-in-libwebsockets|How to solve the linking error in libwebsockets]] 
 + 
 +LibWebSockets en C++ 
 + 
 +[[https://github.com/mnisjk/cppWebSockets|cppWebSockets]] 
 + 
 +[[https://medium.com/@martin.sikora/libwebsockets-simple-websocket-server-68195343d64b|libwebsockets: Simple WebSocket server]] 
 +<code c> 
 +// gcc -Wall testServeur.c -o testServeur -lwebsockets 
 + 
 + 
 +#include <stdio.h> 
 +#include <stdlib.h> 
 +#include <libwebsockets.h> 
 + 
 +static int 
 +lws_callback_http( 
 +                   
 +                  struct lws *wsi, 
 +                  enum lws_callback_reasons reason, 
 +                  void *user, 
 +                  void *in, 
 +                  size_t len 
 +                  ) { 
 +    switch (reason) { 
 +        case LWS_CALLBACK_ESTABLISHED: 
 +            printf("connection established\n"); 
 +            break; 
 +        case LWS_CALLBACK_RECEIVE:
 +            unsigned char *buf = (unsigned char*) 
 +            malloc(LWS_SEND_BUFFER_PRE_PADDING + len 
 +                   + LWS_SEND_BUFFER_POST_PADDING); 
 +            int i; 
 +            for (i=0; i < len; i++) { 
 +                buf[LWS_SEND_BUFFER_PRE_PADDING + (len - 1) - i ] = 
 +                ((char *) in)[i]; 
 +            } 
 +             
 +            printf("received data: %s, replying: %.*s\n", (char *) in, 
 +                   (int) len, buf + LWS_SEND_BUFFER_PRE_PADDING); 
 +             
 +            lws_write(wsi, &buf[LWS_SEND_BUFFER_PRE_PADDING], 
 +                      len, LWS_WRITE_TEXT); 
 +            free(buf); 
 +            break; 
 +        } 
 +        default: 
 +            break; 
 +    } 
 +     
 +    return 0; 
 +
 + 
 +static struct lws_protocols protocols[] = { 
 +    { 
 +        "http-only",   // name 
 +        lws_callback_http, // callback 
 +        0              // per_session_data_size 
 +    }, 
 +    { 
 +        NULL, NULL, 0   /* End of list */ 
 +    } 
 +}; 
 + 
 +static const struct lws_extension exts[] = { 
 +    { 
 +        "permessage-deflate", 
 +        lws_extension_callback_pm_deflate, 
 +        "permessage-deflate" 
 +    }, 
 +    { NULL, NULL, NULL /* terminator */ } 
 +}; 
 + 
 +int main(void) { 
 +    int port = 9000; 
 +    const char *interface = NULL; 
 +    struct lws_context *context; 
 +    int opts = 0; 
 +     
 +    // create libwebsocket context representing this server 
 +    struct lws_context_creation_info info; 
 +     
 +    memset(&info, 0, sizeof info); 
 +    info.port = port; 
 +    info.iface = interface; 
 +    info.protocols = protocols; 
 +    info.extensions = exts; 
 +    //if (!use_ssl) { 
 +    info.ssl_cert_filepath = NULL; 
 +    info.ssl_private_key_filepath = NULL; 
 +    //} else { 
 +    //  info.ssl_cert_filepath = LOCAL_RESOURCE_PATH"/libwebsockets-test-server.pem"; 
 +    //  info.ssl_private_key_filepath = LOCAL_RESOURCE_PATH"/libwebsockets-test-server.key.pem"; 
 +    //} 
 +    info.gid = -1; 
 +    info.uid = -1; 
 +    info.options = opts; 
 +     
 +    context = lws_create_context(&info); 
 +     
 +    if (context == NULL) { 
 +        fprintf(stderr, "libwebsocket init failed\n"); 
 +        return -1; 
 +    } 
 +     
 +    printf("starting server...\n"); 
 +    while (1) { 
 +        lws_service(context, 50); 
 +    } 
 +     
 +    lws_context_destroy(context); 
 +     
 +    return 0; 
 +
 +</code> 
 +Compiler le tout : 
 +  gcc -Wall serveurWebsocket.c -o serveurWebsocket -lwebsockets 
 + 
 +  sudo ldconfig 
 +  ./serveurWebsocket 
 + 
 +   
 +{{tag>raspberry_pi Minitel sylvain}}
serveur_minitel_web.1560719620.txt.gz · Dernière modification : 2019/06/16 21:13 de Mushussu