mirror of
https://github.com/cesanta/mongoose.git
synced 2026-11-02 13:20:51 +00:00
Updated examples to conform to the evented API
This commit is contained in:
1 parent
458320cffb
commit
ea9a60a59a
8 files changed
+116
-62
No files matched your search
+24
-12
@@ -1,18 +1,20 @@
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include "mongoose.h"
|
||||
|
||||
extern const char *find_embedded_file(const char *, size_t *);
|
||||
|
||||
static int iterate_callback(struct mg_connection *c) {
|
||||
if (c->is_websocket) {
|
||||
static int iterate_callback(struct mg_connection *c, enum mg_event ev) {
|
||||
static int counter = 0;
|
||||
if (ev == MG_POLL && c->is_websocket) {
|
||||
char buf[20];
|
||||
int len = snprintf(buf, sizeof(buf), "%d", * (int *) c->callback_param);
|
||||
int len = snprintf(buf, sizeof(buf), "%d", counter++);
|
||||
mg_websocket_write(c, 1, buf, len);
|
||||
}
|
||||
return MG_REQUEST_PROCESSED;
|
||||
return MG_TRUE;
|
||||
}
|
||||
|
||||
static int index_html(struct mg_connection *conn) {
|
||||
static int send_reply(struct mg_connection *conn) {
|
||||
size_t index_size;
|
||||
const char *index_html = find_embedded_file("websocket.html", &index_size);
|
||||
|
||||
@@ -22,27 +24,37 @@ static int index_html(struct mg_connection *conn) {
|
||||
// Echo websocket data back to the client.
|
||||
mg_websocket_write(conn, 1, conn->content, conn->content_len);
|
||||
return conn->content_len == 4 && !memcmp(conn->content, "exit", 4) ?
|
||||
MG_CLIENT_CLOSE : MG_CLIENT_CONTINUE;
|
||||
MG_FALSE : MG_TRUE;
|
||||
} else {
|
||||
mg_send_header(conn, "Content-Type", "text/html");
|
||||
mg_send_data(conn, index_html, index_size);
|
||||
return MG_REQUEST_PROCESSED;
|
||||
return MG_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
|
||||
if (ev == MG_REQ_BEGIN) {
|
||||
return send_reply(conn);
|
||||
} else if (ev == MG_AUTH) {
|
||||
return MG_TRUE;
|
||||
} else {
|
||||
return MG_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
int main(void) {
|
||||
struct mg_server *server = mg_create_server(NULL);
|
||||
unsigned int current_timer = 0, last_timer = 0;
|
||||
struct mg_server *server = mg_create_server(NULL, ev_handler);
|
||||
time_t current_timer = 0, last_timer = time(NULL);
|
||||
|
||||
mg_set_option(server, "listening_port", "8080");
|
||||
mg_set_request_handler(server, index_html);
|
||||
|
||||
printf("Started on port %s\n", mg_get_option(server, "listening_port"));
|
||||
for (;;) {
|
||||
current_timer = mg_poll_server(server, 100);
|
||||
mg_poll_server(server, 100);
|
||||
current_timer = time(NULL);
|
||||
if (current_timer - last_timer > 0) {
|
||||
last_timer = current_timer;
|
||||
mg_iterate_over_connections(server, iterate_callback, ¤t_timer);
|
||||
mg_iterate_over_connections(server, iterate_callback);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user