From 36467d59d6ecfec9018199e5230153ac4298eecb Mon Sep 17 00:00:00 2001 From: aknockae Date: Mon, 19 Jun 2017 00:52:59 +0200 Subject: [PATCH] Fichier d'exemple d'utilisation des websockets côté serveur. --- prog/websockets.c | 102 ------------------------------------------------------------------------------------------------------ 1 file changed, 0 insertions(+), 102 deletions(-) delete mode 100644 prog/websockets.c diff --git a/prog/websockets.c b/prog/websockets.c deleted file mode 100644 index bd9d387..0000000 --- a/prog/websockets.c +++ /dev/null @@ -1,102 +0,0 @@ -#include -#include -#include -#include - -#define MAX_FRAME_SIZE 1024 -#define WAIT_DELAY 50 - - -static int callback_http(struct libwebsocket_context *this, struct libwebsocket *wsi, enum libwebsocket_callback_reasons reason, void *user,void *in,size_t len) -{ - return 0; -} - -static int callback_my(struct libwebsocket_context * this, struct libwebsocket *wsi, enum libwebsocket_callback_reasons reason, void *user,void *in,size_t len) -{ - static char *message = NULL; - static char *reponse = NULL; - static int msize=0; - switch(reason) - { - case LWS_CALLBACK_ESTABLISHED: - printf("connection established\n"); - message=NULL; - // Declenchement d'un prochain envoi au navigateur - libwebsocket_callback_on_writable(this,wsi); - break; - - case LWS_CALLBACK_RECEIVE: - // Ici sont traites les messages envoyes par le navigateur - printf("received data: %s\n",(char *)in); - message=malloc(len+LWS_SEND_BUFFER_PRE_PADDING+LWS_SEND_BUFFER_POST_PADDING); - - if(message==NULL) - { - perror("callback_my.malloc"); exit(EXIT_FAILURE); - } - - memcpy(message+LWS_SEND_BUFFER_PRE_PADDING,in,len); - // Declenchement d'un prochain envoi au navigateur - msize=len; - libwebsocket_callback_on_writable(this,wsi); - break; - - case LWS_CALLBACK_SERVER_WRITEABLE: - // Ici sont envoyes les messages au navigateur - if(message!= NULL) - { - char *text = "number : "; - int length = strlen (text); - unsigned char *buf = malloc(LWS_SEND_BUFFER_PRE_PADDING + length + LWS_SEND_BUFFER_POST_PADDING); - memcpy (buf + LWS_SEND_BUFFER_PRE_PADDING, text, length ); - libwebsocket_write(wsi, buf + LWS_SEND_BUFFER_PRE_PADDING, length, LWS_WRITE_TEXT); - free(buf); - - free(message); - message = NULL; - } - - break; - default: - break; - } - return 0; -} - -static struct libwebsocket_protocols protocols[] = { - { - "http-only", // name - callback_http, // callback - 0, // data size - 0 // maximum frame size - }, - {"myprotocol",callback_my,0,MAX_FRAME_SIZE}, - {NULL,NULL,0,0} -}; - -int main(void) -{ - int port=9000; - struct lws_context_creation_info info; - memset(&info,0,sizeof info); - info.port=port; - info.protocols=protocols; - info.gid=-1; - info.uid=-1; - struct libwebsocket_context *context=libwebsocket_create_context(&info); - - if(context==NULL) - { - fprintf(stderr, "libwebsocket init failed\n"); - return -1; - } - printf("starting server...\n"); - - while(1) - { - libwebsocket_service(context,WAIT_DELAY); - } - libwebsocket_context_destroy(context); - return 0; -} -- libgit2 0.21.2