1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-30 00:00:16 +01:00

test echo versa + uri

Signed-off-by: Andy Green <andy.green@linaro.org>
This commit is contained in:
Andy Green 2014-12-01 21:46:35 +08:00
parent fb8f2b0a73
commit 303f65fbe2

View file

@ -42,6 +42,7 @@
#include "../lib/libwebsockets.h" #include "../lib/libwebsockets.h"
static volatile int force_exit = 0; static volatile int force_exit = 0;
static int versa;
#define MAX_ECHO_PAYLOAD 1400 #define MAX_ECHO_PAYLOAD 1400
#define LOCAL_RESOURCE_PATH INSTALL_DATADIR"/libwebsockets-test-server" #define LOCAL_RESOURCE_PATH INSTALL_DATADIR"/libwebsockets-test-server"
@ -67,6 +68,7 @@ callback_echo(struct libwebsocket_context *context,
/* when the callback is used for server operations --> */ /* when the callback is used for server operations --> */
case LWS_CALLBACK_SERVER_WRITEABLE: case LWS_CALLBACK_SERVER_WRITEABLE:
do_tx:
n = libwebsocket_write(wsi, &pss->buf[LWS_SEND_BUFFER_PRE_PADDING], pss->len, LWS_WRITE_TEXT); n = libwebsocket_write(wsi, &pss->buf[LWS_SEND_BUFFER_PRE_PADDING], pss->len, LWS_WRITE_TEXT);
if (n < 0) { if (n < 0) {
lwsl_err("ERROR %d writing to socket, hanging up\n", n); lwsl_err("ERROR %d writing to socket, hanging up\n", n);
@ -79,6 +81,7 @@ callback_echo(struct libwebsocket_context *context,
break; break;
case LWS_CALLBACK_RECEIVE: case LWS_CALLBACK_RECEIVE:
do_rx:
if (len > MAX_ECHO_PAYLOAD) { if (len > MAX_ECHO_PAYLOAD) {
lwsl_err("Server received packet bigger than %u, hanging up\n", MAX_ECHO_PAYLOAD); lwsl_err("Server received packet bigger than %u, hanging up\n", MAX_ECHO_PAYLOAD);
return 1; return 1;
@ -98,10 +101,14 @@ callback_echo(struct libwebsocket_context *context,
break; break;
case LWS_CALLBACK_CLIENT_RECEIVE: case LWS_CALLBACK_CLIENT_RECEIVE:
if (versa)
goto do_rx;
lwsl_notice("Client RX: %s", (char *)in); lwsl_notice("Client RX: %s", (char *)in);
break; break;
case LWS_CALLBACK_CLIENT_WRITEABLE: case LWS_CALLBACK_CLIENT_WRITEABLE:
if (versa)
goto do_tx;
/* we will send our packet... */ /* we will send our packet... */
pss->len = sprintf((char *)&pss->buf[LWS_SEND_BUFFER_PRE_PADDING], "hello from libwebsockets-test-echo client pid %d index %d\n", getpid(), pss->index++); pss->len = sprintf((char *)&pss->buf[LWS_SEND_BUFFER_PRE_PADDING], "hello from libwebsockets-test-echo client pid %d index %d\n", getpid(), pss->index++);
lwsl_notice("Client TX: %s", &pss->buf[LWS_SEND_BUFFER_PRE_PADDING]); lwsl_notice("Client TX: %s", &pss->buf[LWS_SEND_BUFFER_PRE_PADDING]);
@ -157,6 +164,8 @@ static struct option options[] = {
{ "ratems", required_argument, NULL, 'r' }, { "ratems", required_argument, NULL, 'r' },
#endif #endif
{ "ssl", no_argument, NULL, 's' }, { "ssl", no_argument, NULL, 's' },
{ "versa", no_argument, NULL, 'v' },
{ "uri", required_argument, NULL, 'u' },
{ "passphrase", required_argument, NULL, 'P' }, { "passphrase", required_argument, NULL, 'P' },
{ "interface", required_argument, NULL, 'i' }, { "interface", required_argument, NULL, 'i' },
#ifndef LWS_NO_DAEMONIZE #ifndef LWS_NO_DAEMONIZE
@ -183,6 +192,7 @@ int main(int argc, char **argv)
int listen_port = 80; int listen_port = 80;
struct lws_context_creation_info info; struct lws_context_creation_info info;
char passphrase[256]; char passphrase[256];
char uri[256] = "/";
#ifndef LWS_NO_CLIENT #ifndef LWS_NO_CLIENT
char address[256], ads_port[256 + 30]; char address[256], ads_port[256 + 30];
int rate_us = 250000; int rate_us = 250000;
@ -206,7 +216,7 @@ int main(int argc, char **argv)
#endif #endif
while (n >= 0) { while (n >= 0) {
n = getopt_long(argc, argv, "i:hsp:d:DC:k:P:" n = getopt_long(argc, argv, "i:hsp:d:DC:k:P:v"
#ifndef LWS_NO_CLIENT #ifndef LWS_NO_CLIENT
"c:r:" "c:r:"
#endif #endif
@ -228,7 +238,11 @@ int main(int argc, char **argv)
strncpy(ssl_key, optarg, sizeof(ssl_key)); strncpy(ssl_key, optarg, sizeof(ssl_key));
ssl_key[sizeof(ssl_key) - 1] = '\0'; ssl_key[sizeof(ssl_key) - 1] = '\0';
break; break;
case 'u':
strncpy(uri, optarg, sizeof(uri));
uri[sizeof(uri) - 1] = '\0';
break;
#ifndef LWS_NO_DAEMONIZE #ifndef LWS_NO_DAEMONIZE
case 'D': case 'D':
daemonize = 1; daemonize = 1;
@ -257,6 +271,9 @@ int main(int argc, char **argv)
case 'p': case 'p':
port = atoi(optarg); port = atoi(optarg);
break; break;
case 'v':
versa = 1;
break;
case 'i': case 'i':
strncpy(interface_name, optarg, sizeof interface_name); strncpy(interface_name, optarg, sizeof interface_name);
interface_name[(sizeof interface_name) - 1] = '\0'; interface_name[(sizeof interface_name) - 1] = '\0';
@ -365,7 +382,7 @@ int main(int argc, char **argv)
sprintf(ads_port, "%s:%u\n", address, port & 65535); sprintf(ads_port, "%s:%u\n", address, port & 65535);
wsi = libwebsocket_client_connect(context, address, wsi = libwebsocket_client_connect(context, address,
port, use_ssl, "/", ads_port, port, use_ssl, uri, ads_port,
"origin", NULL, -1); "origin", NULL, -1);
if (!wsi) { if (!wsi) {
lwsl_err("Client failed to connect to %s:%u\n", address, port); lwsl_err("Client failed to connect to %s:%u\n", address, port);
@ -381,7 +398,7 @@ int main(int argc, char **argv)
#ifndef LWS_NO_CLIENT #ifndef LWS_NO_CLIENT
struct timeval tv; struct timeval tv;
if (client) { if (client && !versa) {
gettimeofday(&tv, NULL); gettimeofday(&tv, NULL);
if (((unsigned int)tv.tv_usec - oldus) > (unsigned int)rate_us) { if (((unsigned int)tv.tv_usec - oldus) > (unsigned int)rate_us) {