diff options
Diffstat (limited to 'src/api.c')
-rw-r--r-- | src/api.c | 17 |
1 files changed, 16 insertions, 1 deletions
@@ -193,8 +193,23 @@ static int dc_lws_cb (struct lws * wsi, enum lws_callback_reasons rs, void * us, fprintf(stdout, "%.*s", len, (const unsigned char *) in); char * serialized = dc_json(pass->json, in, len); while (serialized) { - serialized = dc_json(handler, NULL, 0); + cJSON json = cJSON_Parse(serialized); + pass->api_io.client->last_packet + = cJSON_GetNumberValue(cJSON_GetObjectItem(json, "s")); + switch (cJSON_GetNumberValue(cJSON_GetObjectItem(json, "op"))) { + case DC_PING: + client->last_ping = 0; + dc_handle_ping(pass->api_io, NULL); + default: + break; + } + double pi; + if ((pi = cJSON_GetNumberValue(cJSON_GetObjectItem2(json, + "d", "heartbeat_interval")) != NAN)) + pass->api_io.client->ping_interval = pi; + cJSON_Delete(json); + json = NULL; } break; case LWS_CALLBACK_CLIENT_WRITEABLE: /* invoke w/ lws_callback_on_writeable(wsi)4ws */ |