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:
parent
fb8f2b0a73
commit
303f65fbe2
1 changed files with 21 additions and 4 deletions
|
@ -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) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue