[...] my_callback () { struct per_session_data *psd = (struct per_session_data*) user; int nbytes; switch (reason) { case LWS_CALLBACK_ESTABLISHED: /* connection established */ break; case LWS_CALLBACK_CLOSED: /* connection closed */ break; case LWS_CALLBACK_SERVER_WRITEABLE: nbytes = libwebsocket_write(/* data to write */); print_log ("%d bytes written\n", nbytes); break; case LWS_CALLBACK_RECEIVE: print_log ("received %d bytes\n", (int) len); psd->len = prepare_reply (wsi, in, &psd->buf[PADDING]); if (psd->len > 0) libwebsocket_callback_on_writable (context, wsi); break; } return 0; } [...]