websocket_client.c 1.6 KB

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