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

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
serveur_minitel_web [2019/06/18 20:22] – [Openframeworks] Mushussuserveur_minitel_web [2020/04/13 12:52] (Version actuelle) Mushussu
Ligne 9: Ligne 9:
   ofxLibwebsockets   ofxLibwebsockets
 Ctrl-O pour sauvegarder et Ctrl-X pour sortir. 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. Créer un projet avec projectGenerator en incluant l'addon ofxLibwebsockets.
Ligne 16: Ligne 24:
  
 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 LibWebSockets
-  https://stackoverflow.com/questions/35341871/how-to-solve-the-linking-error-in-libwebsockets 
-{{tag>raspberry_pi sylvain}} 
  
 +[[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.1560889338.txt.gz · Dernière modification : 2019/06/18 20:22 de Mushussu