Commit Graph
100 Commits
Author SHA1 Message Date
Benjamin Sergeant 3dabd3a556 (ws) merge all ws_*.cpp files into a single one to speedup compilation 2020-08-15 19:30:17 -07:00
Benjamin Sergeant 0498e2fa98 IXBench.h is missing a pragma once 2020-08-15 18:58:46 -07:00
Benjamin Sergeant 2aaf59651e (socket server) in the loop accepting connections, call select without a timeout on unix to avoid busy looping, and only wake up when a new connection happens 2020-08-15 18:32:59 -07:00
Benjamin Sergeant cd4e51eacf (socket server) instead of busy looping with a sleep, only wake up the GC thread when a new thread will have to be joined, (we know that thanks to the ConnectionState OnSetTerminated callback 2020-08-15 16:24:35 -07:00
Benjamin Sergeant 785842de03 (socket server) add a callback to the ConnectionState to be invoked when the connection is terminated. This will be used by the SocketServer in the future to know on time that the associated connection thread can be terminated. 2020-08-15 16:03:40 -07:00
Benjamin Sergeant 261095fa12 (socket server) do not create a select interrupt object everytime when polling for notifications while waiting for new connections, instead use a persistent one which is a member variable 2020-08-15 15:28:15 -07:00
Benjamin Sergeant ed2ed0f7ae (ixwebsocket client) handle HTTP redirects 2020-08-14 18:13:34 -07:00
Benjamin Sergeant 7ad5ead0f6 document the --config_path option in usage.md 2020-08-14 15:15:27 -07:00
Benjamin Sergeant a8284e64e3 add a simple shell script to test websocket proxy 2020-08-14 15:09:34 -07:00
Benjamin Sergeant 5423a31d5a (ws) have more subcommand handle --pidfile, to write pid to a file 2020-08-14 15:09:12 -07:00
Benjamin Sergeant 53575f8d90 change makefile openssl target to use ninja and install ws 2020-08-14 15:08:37 -07:00
Benjamin Sergeant d3bcbdac26 (ws) upgrade to latest version of nlohmann json (3.9.1 from 3.2.0) 2020-08-13 22:10:38 -07:00
Benjamin Sergeant 8c5b28adce (websocket proxy server) add ability to map different hosts to different websocket servers, using a json config file 2020-08-13 21:20:42 -07:00
Benjamin Sergeant dcbafae35a (ws) on macOS, with OpenSSL or MbedTLS, use /etc/ssl/cert.pem as the system certs 2020-08-12 18:55:13 -07:00
Benjamin Sergeant eb197edcec ws --version does not get printed with a log prefix 2020-08-12 18:44:47 -07:00
Benjamin Sergeant b8265bf7f2 (ws) -q option imply info log level, not warning log level 2020-08-11 15:44:06 -07:00
Benjamin Sergeant e7c4f0b171 add documentation for the websocket send callback and the send return type (fix #239) 2020-08-11 11:24:00 -07:00
Benjamin Sergeant 12f36b61ff (websocket server) Handle programmer error when the server callback is not registered properly (fix #227) 2020-08-06 04:40:32 -07:00
Benjamin Sergeant b15c4189f5 add csharp/dotnet devnull client to measure througput with different runtimes 2020-08-05 13:59:26 -07:00
Benjamin Sergeant 74d3278258 add python test file to benchmark how many messages can be received per second 2020-08-04 10:53:35 -07:00
Benjamin Sergeant 831152b906 add a devnull like sample code using libwebsockets C library, to see how many messages per second a client library can receive (answer is about the same as IXWebSocket) 2020-08-02 19:26:19 -07:00
Benjamin Sergeant 7c81a98632 Add a node.js benchmarking test program, to see how fast node can receive messages. 2020-08-02 14:21:11 -07:00
Benjamin Sergeant 6e47c62c06 (ws) Add a new ws sub-command, push_server. This command runs a server which sends many messages in a loop to a websocket client. We can receive above 200,000 messages per second (cf #235). 2020-08-02 12:41:34 -07:00
Benjamin Sergeant bcae7f326d (ws) Add a new ws sub-command, echo_client. This command send a message to an echo server, and send back to a server whatever message it does receive. When connecting to a local ws echo_server, on my MacBook Pro 2015 I can send/receive around 30,000 messages per second. (cf #235) 2020-08-02 12:09:13 -07:00
Benjamin Sergeant d719c41e31 (ws) ws echo_server. Add a -q option to only enable warning and error log levels. This is useful for bench-marking so that we do not print a lot of things on the console. (cf #235) 2020-08-02 11:53:21 -07:00
Benjamin Sergeant 6f0307fb35 (build) make using zlib optional, with the caveat that some http and websocket features are not available when zlib is absent 2020-07-31 22:54:57 -07:00
Benjamin Sergeant 2e3d625c1e (websocket client) onProgressCallback not called for short messages on a websocket (fix #233) 2020-07-29 17:47:33 -07:00
Benjamin Sergeant 029289413c ws test shell script / add option so tune how large sent file will be 2020-07-29 17:46:37 -07:00
Benjamin Sergeant 4d51098c86 (websocket client) heartbeat is not sent at the requested frequency (fix #232) 2020-07-29 11:24:42 -07:00
Benjamin Sergeant c2b05af022 can compile on macOS against jsoncpp installed from homebrew 2020-07-28 22:00:29 -07:00
Benjamin Sergeant e85f975ab0 compiler warning fixes 2020-07-28 21:46:26 -07:00
Benjamin Sergeant dc77d62a5d (ixcobra) CobraConnection: unsubscribe from all subscriptions when disconnecting 2020-07-28 10:32:18 -07:00
Benjamin Sergeant 4f41f209a2 (socket utility) move ix::getFreePort to ixwebsocket library 2020-07-27 18:17:13 -07:00
Benjamin Sergeant 5940e53d77 enable cobra tests which were disabled 2020-07-27 17:39:53 -07:00
Benjamin Sergeant 22dffd5b7e WebSocket::close is re-entrant 2020-07-27 17:38:33 -07:00
Benjamin Sergeant af2f31045d snake server / join subscription background thread in the ConnectionState destructor + attach cobra message subscription id to the connection state instead of having it be a local reference that gets unbound 2020-07-27 17:35:03 -07:00
Benjamin Sergeant 5daa59f9f3 minor makefile tweaks 2020-07-27 17:19:05 -07:00
Benjamin Sergeant 2ea9d06a93 fix typo in unittest string description: ununexpected -> unsubscribed 2020-07-27 17:16:53 -07:00
Benjamin Sergeant 847fc142d1 (ixwebsocket server) change legacy api with 2 nested callbacks, so that the first api takes a weak_ptr<WebSocket> as its first argument 2020-07-25 11:42:07 -07:00
Benjamin Sergeant 0388459bd0 (ixwebsocket) add WebSocketProxyServer, from ws. Still need to make the interface better. 2020-07-25 11:26:06 -07:00
Benjamin Sergeant 9a47ec1217 (ixsnake) uses an std::thread to handle redis subscriptions (2 unittest still failing) 2020-07-24 18:12:07 -07:00
Benjamin Sergeant 45a40c8640 new Dockerfile to run locally the test on an Ubuntu 20.04 system 2020-07-24 14:46:09 -07:00
Benjamin Sergeant e34f1c30d6 (ws) port broadcast_server sub-command to the new server API 2020-07-24 14:35:07 -07:00
Benjamin Sergeant c14a4c0e3e formatting 2020-07-24 13:04:14 -07:00
Benjamin Sergeant b146e93a3a (unittest) port most unittests to the new server API 2020-07-24 12:49:36 -07:00
Benjamin Sergeant 9957ec9724 (ws) port ws snake to the new server API 2020-07-24 12:33:17 -07:00
Benjamin Sergeant 78a42f61bd add tool to ease making commits 2020-07-24 11:53:09 -07:00
Benjamin Sergeant e78019dad6 (ws) port ws transfer to the new server API 2020-07-24 11:52:16 -07:00
Benjamin Sergeant 0f026c5da2 (websocket client) reset WebSocketTransport onClose callback in the WebSocket destructor 2020-07-24 10:03:29 -07:00
Benjamin Sergeant c26a2d5d39 (websocket server) reset client websocket callback when the connection is closed 2020-07-24 09:41:02 -07:00
Benjamin Sergeant 2798886c0b (websocket server) add a new simpler API to handle client connections / that API does not trigger a memory leak while the previous one did 2020-07-23 19:29:41 -07:00
Benjamin Sergeant ffde283a4b (build) merge platform specific files which were used to have different implementations for setting a thread name into a single file, to make it easier to include every source files and build the ixwebsocket library (fix #226) 2020-07-17 11:58:06 -07:00
Benjamin Sergeant f7031d0d3e set thread name in only one file 2020-07-17 11:43:50 -07:00
Benjamin Sergeant 595e6c57df IXSelectInterruptPipe.h included in cmake on windows but compiled out 2020-07-17 11:33:02 -07:00
Benjamin Sergeant 87709c201e (socket server) bump default max connection count from 32 to 128 2020-07-10 17:11:11 -07:00
Benjamin Sergeant e70d83ace1 (snake) implement super simple stream sql expression support in snake server 2020-07-10 16:10:59 -07:00
Benjamin Sergeant ca829a3a98 implement very very simple stream sql support 2020-07-10 16:07:51 -07:00
Benjamin Sergeant 26a1e63626 snake: stream sql mock + add republished channel option 2020-07-10 15:06:55 -07:00
Benjamin Sergeant c98959b895 comment out unittest which cannot be activated yet 2020-07-09 10:34:52 -07:00
Benjamin Sergeant b21306376b uwp build fix + more ivp6 support 2020-07-08 12:38:55 -07:00
Benjamin Sergeant fbd17685a1 (socket+websocket+http+redis+snake servers) expose the remote ip and remote port when a new connection is made (see #222) / only ipv4 is handled 2020-07-08 12:10:35 -07:00
Benjamin Sergeant 3a673575dd clang format 2020-07-08 10:39:46 -07:00
Benjamin Sergeant d5e51840ab use const iterators 2020-07-08 10:34:14 -07:00
Benjamin Sergeant 543c2086b2 more templates in WebSocketTransport 2020-07-07 21:26:42 -07:00
Benjamin Sergeant 95eab59c08 WebSocketPerMessageDeflateCompressor can work with vector or std::string 2020-07-07 21:26:04 -07:00
Benjamin Sergeant e9e768a288 better unittest for IXWebSocketPerMessageDeflateCompressor 2020-07-07 21:15:34 -07:00
Benjamin Sergeant e2180a1f31 add unittest for IXWebSocketPerMessageDeflateCompressor 2020-07-07 20:56:38 -07:00
Benjamin Sergeant 7c1b57c8cd (cmake) change the way zlib and openssl are searched 2020-07-07 10:58:20 -07:00
Benjamin Sergeant 89e7a35a81 add cmake comment about using a custom zlib 2020-07-06 18:34:14 -07:00
Benjamin Sergeant de6acfe54e Merge branch 'flagarde-patch-1' 2020-07-06 18:31:05 -07:00
Benjamin Sergeant 4789e190a0 zlib needs to be found (with vcpkg in CI), do not use our bundled copy 2020-07-06 18:09:45 -07:00
Benjamin Sergeant d6366587a0 (UWP CI) install zlib from vcpkg 2020-07-06 17:52:28 -07:00
Benjamin Sergeant dddf00e3b1 (cobra python bots) remove the test which stop the bot when events do not follow cobra metrics system schema with an id and a device entry 2020-07-06 16:15:24 -07:00
Benjamin Sergeant cc47fb1c83 (cobra bots) remove bots which is not required now that we can use Python extensions 2020-06-26 16:49:08 -07:00
Benjamin Sergeant 8e8cea1bcd delete C++ code for first memory warning 2020-06-25 11:22:21 -07:00
Benjamin Sergeant 68c97da518 (cmake) new python code is optional and enabled at cmake time with -DUSE_PYTHON=1 2020-06-25 10:05:02 -07:00
Benjamin Sergeant f8b8799799 fix windows compile error with misplaced #ifdefs/#endifs 2020-06-24 23:26:14 -07:00
Benjamin Sergeant 615f1778c3 new cobra to python bot (still sending to statsd)
values + string building can be done in python (we are embedding it)
2020-06-24 23:21:19 -07:00
Benjamin Sergeant c45b197c85 (cobra metrics to statsd bot) fps slow frame info : do not include os name 2020-06-19 18:10:49 -07:00
Benjamin Sergeant 78713895dd (cobra metrics to statsd bot) send info about memory warnings 2020-06-19 17:46:59 -07:00
Benjamin Sergeant aae2402ed2 disable flaky unittest once again ... ping pong is not reliable timing wise 2020-06-19 01:16:07 -07:00
Benjamin Sergeant b62de6e516 tweak ping/pong test to be more lenient 2020-06-19 01:11:05 -07:00
Benjamin Sergeant 6e747849d7 enable ping unittest, which is flaky -> see #218 2020-06-19 01:04:44 -07:00
Benjamin Sergeant a3a73ce1ac add unittest to test http redirection fully 2020-06-19 00:22:39 -07:00
Benjamin Sergeant 10c014bf98 (http client) fix deadlock when following redirects 2020-06-19 00:11:06 -07:00
Benjamin Sergeant 9bb3643fc7 (cobra metrics to statsd bot) send info about net requests 2020-06-18 11:25:48 -07:00
Benjamin Sergeant 56db55caca (bots) display received/sent message logs only if we are authenticated 2020-06-18 10:49:36 -07:00
Benjamin Sergeant 565a08b229 (cobra client and bots) add batch_size subscription option for retrieving multiple messages at once 2020-06-17 17:13:45 -07:00
Benjamin Sergeant bf0f11fd65 fix size_t with int comparison warning 2020-06-17 16:56:06 -07:00
Benjamin Sergeant 558daf8911 (websocket) WebSocketServer is not a final class, so that users can extend it (fix #215) 2020-06-15 18:29:42 -07:00
Benjamin Sergeant 7ba7ff4b2a (cobra bots) minor aesthetic change, in how we display http headers with a : then space as key value separator instead of :: with
no space
2020-06-15 16:09:31 -07:00
Benjamin Sergeant aa142df486 (cobra metrics to statsd bot) change from a statsd type of gauge to a timing one 2020-06-12 13:47:01 -07:00
Benjamin Sergeant 5e200a440f (redis cobra bots) capture most used devices in a zset 2020-06-11 18:49:45 -07:00
Benjamin Sergeant 6ed8723d7d try to fix a double linking error on Windows with linenoise.hpp 2020-06-11 18:01:45 -07:00
Benjamin Sergeant ac9710d5d6 (ws) add bare bone redis-cli like sub-command, with command line editing powered by libnoise 2020-06-11 17:30:42 -07:00
Benjamin Sergeant 35d76c20dc add redis cli skeleton ws sub-command 2020-06-11 13:51:10 -07:00
Benjamin Sergeant ca7344d9dc use reference in range for loop 2020-06-11 13:50:37 -07:00
Benjamin Sergeant 7603d1a71b (redis cobra bots) ws cobra metrics to redis / hostname invalid parsing 2020-06-11 08:33:36 -07:00
Benjamin Sergeant d0cd4aed5a (redis cobra bots) xadd with maxlen + fix bug in xadd client implementation and ws cobra metrics to redis command argument parsing 2020-06-11 08:20:03 -07:00
Benjamin Sergeant c5aadffa08 (redis cobra bots) update the cobra to redis bot to use the bot framework, and change it to report fps metrics into redis streams. 2020-06-10 22:30:55 -07:00