Http-сервер Mongoose C ++ получает только событие MG_OPEN_FILE

У меня есть этот сервер, использующий mongoose, который принимает какой-то запрос, анализирует информацию, выполняет действие и возвращает результат.

Например, я могу запросить это следующим образом сервер: порт / действие? Arg1 = test&арг2 = …

Моя проблема в том, что каждый раз, когда я запрашиваю сервер, я получаю только события «MG_OPEN_FILE». И за каждый запрос я получаю 3 из них.

Я читал, что это может быть нормально иметь некоторые запросы http, но проблема здесь в том, что у меня нет никаких событий «MG_NEW_REQUEST».

По сути, всякий раз, когда я запускаю сервер, первое соединение (и все они после) всегда возвращает следующие события:
MG_OPEN_FILE

MG_OPEN_FILE

MG_OPEN_FILE

MG_REQUEST_COMPLETE

Я называю свой сервер так:

int main(int argc, char* argv[]) {
struct mg_context *ctx;
const char *options[] = {"listening_ports", "8080", "num_threads","10",  NULL};
ctx = mg_start(&callback, NULL, options);
while(1){
getchar(); // Wait until user hits "enter"}
mg_stop(ctx);
return 0;
}

И функция обратного вызова начинается с:

static void *callback(enum mg_event event, struct mg_connection *conn)
{

const struct mg_request_info *request_info = mg_get_request_info(conn);
if (event == MG_NEW_REQUEST)
{

Но это всегда событие MG_OPEN_FILE, и я понятия не имею о причине 🙁
Так что, если у кого-то есть идеи по поводу этого, я был бы чрезвычайно благодарен!

0

Решение

Когда вы получаете MG_OPEN_FILE, проверять (char *) mg_get_request_info(conn)->ev_data
Он содержит имя файла, который хочет открыть mongoose.
Если у вас есть этот файл в памяти, верните его данные и размер.
Если нет, верните NULL,

1

Другие решения

Ваш обратный вызов возвращает, что вы запустили событие? Я только возвращаю «да», если я обработаю событие.

0

По вопросам рекламы [email protected]