Serveur Minitel web
Openframeworks
Récupérer la librairie ofxLibwebsockets sur 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 : 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 :
yunohost sur raspberrypi, si on ne dispose pas de nom de domaine nohostme
LibWebSockets
How to solve the linking error in libwebsockets
LibWebSockets en C++
libwebsockets: Simple WebSocket server
// 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; }
Compiler le tout :
gcc -Wall serveurWebsocket.c -o serveurWebsocket -lwebsockets
sudo ldconfig ./serveurWebsocket