diff --git a/mongoose/mongoose_interface.c b/mongoose/mongoose_interface.c index 4b61acb..96f667b 100644 --- a/mongoose/mongoose_interface.c +++ b/mongoose/mongoose_interface.c @@ -716,6 +716,14 @@ static void ev_handler(struct mg_connection *nc, int ev, void *ev_data, void *fn } else if (ev == MG_EV_ERROR) { ERROR("%p %s", nc->fd, (char *) ev_data); } else if (ev == MG_EV_WS_MSG) { + struct mg_ws_message *wm = (struct mg_ws_message *) ev_data; + + char *msg_type = mg_json_get_str(wm->data, "$.type"); + if (msg_type != NULL && !strcmp(msg_type, "ping")) { + const char *msg = "{\"type\": \"pong\"}"; + mg_ws_send(nc, msg, strlen(msg), WEBSOCKET_OP_TEXT); + } + mg_iobuf_del(&nc->recv, 0, nc->recv.len); } }