Переглянути джерело

Update websocket example to use the current interface

bel 10 роки тому
батько
коміт
615970e9d1
1 змінених файлів з 35 додано та 0 видалено
  1. 35 0
      examples/websocket_client/websocket_client.c

+ 35 - 0
examples/websocket_client/websocket_client.c

@@ -32,13 +32,22 @@ const size_t websocket_goodbye_msg_len = 14 /* strlen(websocket_goodbye_msg) */
 /*************************************************************************************/
 /*************************************************************************************/
 /* WEBSOCKET SERVER                                                                  */
 /* WEBSOCKET SERVER                                                                  */
 /*************************************************************************************/
 /*************************************************************************************/
+#if defined(MG_LEGACY_INTERFACE)
 int websock_server_connect(const struct mg_connection * conn)
 int websock_server_connect(const struct mg_connection * conn)
+#else
+int websocket_server_connect(const struct mg_connection * conn, void * _ignored)
+#endif
 {
 {
     printf("Server: Websocket connected\n");
     printf("Server: Websocket connected\n");
     return 0; /* return 0 to accept every connection */
     return 0; /* return 0 to accept every connection */
 }
 }
 
 
+
+#if defined(MG_LEGACY_INTERFACE)
 void websocket_server_ready(struct mg_connection * conn)
 void websocket_server_ready(struct mg_connection * conn)
+#else
+void websocket_server_ready(struct mg_connection * conn, void * _ignored)
+#endif
 {
 {
     printf("Server: Websocket ready\n");
     printf("Server: Websocket ready\n");
 
 
@@ -48,7 +57,12 @@ void websocket_server_ready(struct mg_connection * conn)
     mg_unlock_connection(conn);
     mg_unlock_connection(conn);
 }
 }
 
 
+
+#if defined(MG_LEGACY_INTERFACE)
 int websocket_server_data(struct mg_connection * conn, int bits, char *data, size_t data_len)
 int websocket_server_data(struct mg_connection * conn, int bits, char *data, size_t data_len)
+#else
+int websocket_server_data(struct mg_connection * conn, int bits, char *data, size_t data_len, void *_ignored)
+#endif
 {
 {
     printf("Server: Got %u bytes from the client\n", data_len);
     printf("Server: Got %u bytes from the client\n", data_len);
 
 
@@ -67,13 +81,19 @@ int websocket_server_data(struct mg_connection * conn, int bits, char *data, siz
     return 1; /* return 1 to keep the connetion open */
     return 1; /* return 1 to keep the connetion open */
 }
 }
 
 
+
+#if defined(MG_LEGACY_INTERFACE)
 void websocket_server_connection_close(const struct mg_connection * conn)
 void websocket_server_connection_close(const struct mg_connection * conn)
+#else
+void websocket_server_connection_close(const struct mg_connection * conn, void *_ignored)
+#endif
 {
 {
     printf("Server: Close connection\n");
     printf("Server: Close connection\n");
 
 
     /* Can not send a websocket goodbye message here - the connection is already closed */
     /* Can not send a websocket goodbye message here - the connection is already closed */
 }
 }
 
 
+
 struct mg_context * start_websocket_server()
 struct mg_context * start_websocket_server()
 {
 {
     const char * options[] = { "document_root", DOCUMENT_ROOT,
     const char * options[] = { "document_root", DOCUMENT_ROOT,
@@ -86,11 +106,26 @@ struct mg_context * start_websocket_server()
     struct mg_context *ctx;
     struct mg_context *ctx;
 
 
     memset(&callbacks, 0, sizeof(callbacks));
     memset(&callbacks, 0, sizeof(callbacks));
+
+#if defined(MG_LEGACY_INTERFACE)
+    /* Obsolete: */
     callbacks.websocket_connect = websock_server_connect;
     callbacks.websocket_connect = websock_server_connect;
     callbacks.websocket_ready = websocket_server_ready;
     callbacks.websocket_ready = websocket_server_ready;
     callbacks.websocket_data = websocket_server_data;
     callbacks.websocket_data = websocket_server_data;
     callbacks.connection_close = websocket_server_connection_close;
     callbacks.connection_close = websocket_server_connection_close;
+
     ctx = mg_start(&callbacks, 0, options);
     ctx = mg_start(&callbacks, 0, options);
+#else
+    /* New interface: */
+    ctx = mg_start(&callbacks, 0, options);
+
+    mg_set_websocket_handler(ctx, "/websocket",
+                             websocket_server_connect,
+                             websocket_server_ready,
+                             websocket_server_data,
+                             websocket_server_connection_close,
+                             NULL);
+#endif
 
 
     return ctx;
     return ctx;
 }
 }