ws_timestamp - get WebSockets current timestamp#

uint64_t ws_timestamp(struct websockets *ws)#

The WebSockets event-loop concept of “now”.

Note

the timestamp is updated at the start of each event-loop iteration

Parameters:
  • ws – the WebSockets handle created with ws_init()

Returns:

the timestamp in milliseconds from when ws_timestamp_update() was last called

Example#

uint64_t time_start, time_end;

void on_connect(void *data,
                struct websockets *ws,
                struct ws_info *info,
                const char *ws_protocols)
{
  /* get timestamp of when connection began */
  time_start = ws_timestamp(ws);
}

void on_close(void *data,
              struct websockets *ws,
              struct ws_info *info,
              enum ws_close_reason wscode,
              const char *reason,
              size_t len)
{
  /* get timestamp of when connection ended */
  time_end = ws_timestamp(ws);
}

int main(void)
{
  struct ws_callbacks cbs = { .on_connect = &on_connect,
                              .on_close = &on_close };
  CURLM *mhandle = curl_multi_init();
  struct websockets *ws = ws_init(&cbs, mhandle, NULL);
  ws_set_url(ws, "wss://example.com", NULL);

  /* run the event-loop */
  ws_start(ws);

  uint64_t tstamp;
  bool is_running;
  do {
    is_running = ws_easy_run(ws, 5, &tstamp);
  } while (is_running);

  printf("Connection lasted %ld milliseconds\n", (long)(time_end - time_start));

  ws_end(ws);

  ws_cleanup(ws);
  curl_multi_cleanup(mhandle);
}