websocket_client.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. * Copyright (c) 2014 Jordan Shelley
  3. * https://github.com/jshelley
  4. * License http://opensource.org/licenses/mit-license.php MIT License
  5. */
  6. // Simple example program on how to use websocket client embedded C interface.
  7. #ifdef _WIN32
  8. #include <Windows.h>
  9. #else
  10. #include <unistd.h>
  11. #endif
  12. #include <string.h>
  13. #include "civetweb.h"
  14. #define DOCUMENT_ROOT "."
  15. #define PORT "8888"
  16. #define SSL_CERT "./ssl/server.pem"
  17. static int websocket_data_handler(struct mg_connection *conn, int flags, char *data, size_t data_len)
  18. {
  19. printf("From server: %s\r\n", data);
  20. return 1;
  21. }
  22. int main(int argc, char *argv[])
  23. {
  24. const char * options[] = { "document_root", DOCUMENT_ROOT,
  25. "ssl_certificate", SSL_CERT,
  26. "listening_ports", PORT, 0
  27. };
  28. struct mg_callbacks callbacks;
  29. struct mg_context *ctx;
  30. memset(&callbacks, 0, sizeof(callbacks));
  31. ctx = mg_start(&callbacks, 0, options);
  32. char ebuf[100];
  33. struct mg_connection* newconn = mg_websocket_client_connect("echo.websocket.org", 443, 1,
  34. ebuf, sizeof(ebuf),
  35. "/", "http://websocket.org",websocket_data_handler);
  36. if(newconn == NULL)
  37. {
  38. printf("Error: %s", ebuf);
  39. return 1;
  40. }
  41. mg_websocket_write(newconn, WEBSOCKET_OPCODE_TEXT, "data1", 5);
  42. sleep(5);
  43. mg_websocket_write(newconn, WEBSOCKET_OPCODE_TEXT, "data2", 5);
  44. sleep(5);
  45. mg_websocket_write(newconn, WEBSOCKET_OPCODE_TEXT, "data3", 5);
  46. sleep(5);
  47. mg_websocket_write(newconn, WEBSOCKET_OPCODE_TEXT, "data4", 5);
  48. sleep(5);
  49. mg_close_connection(newconn);
  50. printf("Bye!\n");
  51. return 0;
  52. }