{"schema":"libjg2-1",
"vpath":"/git/",
"avatar":"/git/avatar/",
"alang":"",
"gen_ut":1758395942,
"reponame":"libwebsockets",
"desc":"libwebsockets lightweight C networking library",
"owner": { "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" },"url":"https://libwebsockets.org/repo/libwebsockets",
"f":3,
"items": [
{"schema":"libjg2-1",
"cid":"c7f1520e6e2c8b6034c56bb5fc8515dc",
"commit": {"type":"commit",
"time": 1522982282,
"time_ofs": 480,
"oid_tree": { "oid": "43347734de84b7b87ea31f66cb5ffec587fdee6f", "alias": []},
"oid":{ "oid": "60554119281f358c0cc920fae6a3f7a328441aa4", "alias": []},
"msg": "minimal-ws-client",
"sig_commit": { "git_time": { "time": 1522982282, "offset": 480 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" },
"sig_author": { "git_time": { "time": 1520999920, "offset": 480 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }},
"body": "minimal-ws-client"
,
"diff": "diff --git a/minimal-examples/minimal-http-client/minimal-http-client.c b/minimal-examples/minimal-http-client/minimal-http-client.c\nindex 45348c1..8e9ba0a 100644\n--- a/minimal-examples/minimal-http-client/minimal-http-client.c\n+++ b/minimal-examples/minimal-http-client/minimal-http-client.c\n@@ -14,7 +14,9 @@\n \n #include \u003clibwebsockets.h\u003e\n #include \u003cstring.h\u003e\n+#include \u003csignal.h\u003e\n \n+static int interrupted;\n static struct lws *client_wsi;\n \n static int\n@@ -79,6 +81,12 @@ static const struct lws_protocols protocols[] \u003d {\n \t{ NULL, NULL, 0, 0 }\n };\n \n+static void\n+sigint_handler(int sig)\n+{\n+\tinterrupted \u003d 1;\n+}\n+\n int main(int argc, char **argv)\n {\n \tstruct lws_context_creation_info info;\n@@ -86,6 +94,7 @@ int main(int argc, char **argv)\n \tstruct lws_context *context;\n \tint n \u003d 0;\n \n+\tsignal(SIGINT, sigint_handler);\n \tlws_set_log_level(LLL_ERR | LLL_WARN | LLL_NOTICE | LLL_USER\n \t\t\t/* | LLL_INFO */ /* | LLL_DEBUG */, NULL);\n \tlwsl_user(\u0022LWS minimal http client\u005cn\u0022);\n@@ -116,7 +125,7 @@ int main(int argc, char **argv)\n \ti.pwsi \u003d \u0026client_wsi;\n \tlws_client_connect_via_info(\u0026i);\n \n-\twhile (n \u003e\u003d 0 \u0026\u0026 client_wsi)\n+\twhile (n \u003e\u003d 0 \u0026\u0026 client_wsi \u0026\u0026 !interrupted)\n \t\tn \u003d lws_service(context, 1000);\n \n \tlws_context_destroy(context);\ndiff --git a/minimal-examples/minimal-ws-client/CMakeLists.txt b/minimal-examples/minimal-ws-client/CMakeLists.txt\nnew file mode 100644\nindex 0000000..2c8ff3d\n--- /dev/null\n+++ b/minimal-examples/minimal-ws-client/CMakeLists.txt\n@@ -0,0 +1,12 @@\n+cmake_minimum_required(VERSION 2.8)\n+\n+set(SAMP lws-minimal-ws-client)\n+set(SRCS minimal-ws-client.c)\n+\n+if (UNIX)\n+ set(CMAKE_C_FLAGS \u0022-Wall -Wsign-compare -Wignored-qualifiers -Wtype-limits -Wuninitialized -Werror -Wundef ${CMAKE_C_FLAGS}\u0022 )\n+endif()\n+\n+add_executable(${SAMP} ${SRCS})\n+target_link_libraries(${SAMP} -lwebsockets)\n+\ndiff --git a/minimal-examples/minimal-ws-client/README.md b/minimal-examples/minimal-ws-client/README.md\nnew file mode 100644\nindex 0000000..f3a0b82\n--- /dev/null\n+++ b/minimal-examples/minimal-ws-client/README.md\n@@ -0,0 +1,35 @@\n+# lws minimal ws client\n+\n+## build\n+\n+```\n+ $ cmake . \u0026\u0026 make\n+```\n+\n+## usage\n+\n+The application goes to https://libwebsockets.org and makes a wss connection\n+using the dumb-increment-protocol. It shows the incrementing number it is\n+being sent over ws as it arrives.\n+\n+```\n+./lws-minimal-ws-client \n+[2018/03/14 11:57:24:0689] USER: LWS minimal ws client\n+[2018/03/14 11:57:24:0705] NOTICE: Creating Vhost 'default' port -1, 1 protocols, IPv6 off\n+[2018/03/14 11:57:24:0710] NOTICE: created client ssl context for default\n+[2018/03/14 11:57:24:0788] NOTICE: lws_client_connect_2: 0x15b8310: address libwebsockets.org\n+[2018/03/14 11:57:24:7643] NOTICE: lws_client_connect_2: 0x15b8310: address libwebsockets.org\n+[2018/03/14 11:57:26:9191] USER: RX: 0\n+[2018/03/14 11:57:26:9318] USER: RX: 1\n+[2018/03/14 11:57:27:2182] USER: RX: 2\n+[2018/03/14 11:57:27:2336] USER: RX: 3\n+[2018/03/14 11:57:27:2838] USER: RX: 4\n+[2018/03/14 11:57:27:5173] USER: RX: 5\n+[2018/03/14 11:57:27:5352] USER: RX: 6\n+[2018/03/14 11:57:27:5854] USER: RX: 7\n+[2018/03/14 11:57:27:8156] USER: RX: 8\n+[2018/03/14 11:57:27:8359] USER: RX: 9\n+^C[2018/03/14 11:57:27:9884] USER: Completed\n+```\n+\n+\ndiff --git a/minimal-examples/minimal-ws-client/minimal-ws-client.c b/minimal-examples/minimal-ws-client/minimal-ws-client.c\nnew file mode 100644\nindex 0000000..c040dcb\n--- /dev/null\n+++ b/minimal-examples/minimal-ws-client/minimal-ws-client.c\n@@ -0,0 +1,117 @@\n+/*\n+ * lws-minimal-ws-client\n+ *\n+ * Copyright (C) 2018 Andy Green \u003candy@warmcat.com\u003e\n+ *\n+ * This file is made available under the Creative Commons CC0 1.0\n+ * Universal Public Domain Dedication.\n+ *\n+ * This demonstrates the a minimal http client using lws.\n+ *\n+ * It connects to https://libwebsockets.org/ and makes a\n+ * wss connection to the dumb-increment protocol there. While\n+ * connected, it prints the numbers it is being sent by\n+ * dumb-increment protocol.\n+ */\n+\n+#include \u003clibwebsockets.h\u003e\n+#include \u003cstring.h\u003e\n+#include \u003csignal.h\u003e\n+\n+static int interrupted;\n+static struct lws *client_wsi;\n+\n+static int\n+callback_dumb_increment(struct lws *wsi, enum lws_callback_reasons reason,\n+\t void *user, void *in, size_t len)\n+{\n+\tswitch (reason) {\n+\n+\t/* because we are protocols[0] ... */\n+\tcase LWS_CALLBACK_CLIENT_CONNECTION_ERROR:\n+\t\tlwsl_err(\u0022CLIENT_CONNECTION_ERROR: %s\u005cn\u0022,\n+\t\t\t in ? (char *)in : \u0022(null)\u0022);\n+\t\tclient_wsi \u003d NULL;\n+\t\tbreak;\n+\n+\tcase LWS_CALLBACK_CLIENT_ESTABLISHED:\n+\t\tlwsl_user(\u0022%s: established\u005cn\u0022, __func__);\n+\t\tbreak;\n+\n+\tcase LWS_CALLBACK_CLIENT_RECEIVE:\n+\t\tlwsl_user(\u0022RX: %s\u005cn\u0022, (const char *)in);\n+\t\tbreak;\n+\n+\tcase LWS_CALLBACK_CLOSED:\n+\t\tclient_wsi \u003d NULL;\n+\t\tbreak;\n+\n+\tdefault:\n+\t\tbreak;\n+\t}\n+\n+\treturn lws_callback_http_dummy(wsi, reason, user, in, len);\n+}\n+\n+static const struct lws_protocols protocols[] \u003d {\n+\t{\n+\t\t\u0022dumb-increment-protocol\u0022,\n+\t\tcallback_dumb_increment,\n+\t\t0,\n+\t\t0,\n+\t},\n+\t{ NULL, NULL, 0, 0 }\n+};\n+\n+static void\n+sigint_handler(int sig)\n+{\n+\tinterrupted \u003d 1;\n+}\n+\n+int main(int argc, char **argv)\n+{\n+\tstruct lws_context_creation_info info;\n+\tstruct lws_client_connect_info i;\n+\tstruct lws_context *context;\n+\tint n \u003d 0;\n+\n+\tsignal(SIGINT, sigint_handler);\n+\n+\tlws_set_log_level(LLL_ERR | LLL_WARN | LLL_NOTICE | LLL_USER\n+\t\t\t/* | LLL_INFO */ /* | LLL_DEBUG */, NULL);\n+\tlwsl_user(\u0022LWS minimal ws client\u005cn\u0022);\n+\n+\tmemset(\u0026info, 0, sizeof info); /* otherwise uninitialized garbage */\n+\tinfo.options \u003d LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT;\n+\tinfo.port \u003d CONTEXT_PORT_NO_LISTEN; /* we do not run any server */\n+\tinfo.protocols \u003d protocols;\n+\n+\tcontext \u003d lws_create_context(\u0026info);\n+\tif (!context) {\n+\t\tlwsl_err(\u0022lws init failed\u005cn\u0022);\n+\t\treturn 1;\n+\t}\n+\n+\tmemset(\u0026i, 0, sizeof i); /* otherwise uninitialized garbage */\n+\ti.context \u003d context;\n+\n+\ti.port \u003d 443;\n+\ti.address \u003d \u0022libwebsockets.org\u0022;\n+\ti.path \u003d \u0022/\u0022;\n+\ti.host \u003d i.address;\n+\ti.origin \u003d i.address;\n+\ti.ssl_connection \u003d 1;\n+\n+\ti.protocol \u003d protocols[0].name; /* \u0022dumb-increment-protocol\u0022 */\n+\ti.pwsi \u003d \u0026client_wsi;\n+\tlws_client_connect_via_info(\u0026i);\n+\n+\twhile (n \u003e\u003d 0 \u0026\u0026 client_wsi \u0026\u0026 !interrupted)\n+\t\tn \u003d lws_service(context, 1000);\n+\n+\tlws_context_destroy(context);\n+\tlwsl_user(\u0022Completed\u005cn\u0022);\n+\n+\treturn 0;\n+}\n","s":{"c":1758395942,"u": 1426}}
],"g": 3440,"chitpc": 0,"ehitpc": 0,"indexed":0
,
"ab": 0, "si": 0, "db":0, "di":0, "sat":0, "lfc": "0000"}