Commit Graph

149 Commits

Author SHA1 Message Date
d58798e36c when trying to flush the send buffer, use select to wait until it is possible instead of using sleep to retry at a given frequency 2019-03-18 14:25:27 -07:00
e158635f57 linux hangs when closing 2019-03-16 11:38:23 -07:00
b91dc77d6f select interrupt cleanup 2019-03-14 18:37:38 -07:00
9d245add9c set a default close reason string 2019-03-14 14:52:51 -07:00
ded03ed743 do not busy loop while sending 2019-03-14 14:48:08 -07:00
5b4354a6f3 send optimization + ws file transfer test 2019-03-14 14:47:53 -07:00
08c2cdbf1d send can fail silently when sending would block (EWOULDBLOCK return for send) (#18)
* try to use a pipe for communication

* flush send buffer on the background thread

* cleanup

* linux fix / linux still use event fd for now

* cleanup
2019-03-13 23:09:45 -07:00
dedbeb3eab websocket send: make sure all data in the kernel buffer is sent 2019-03-11 22:16:55 -07:00
d88bf16500 add new message type when receiving message fragments 2019-03-11 11:12:43 -07:00
0c226c7629 readBytes does not read bytes one by one but in chunks 2019-03-02 21:11:16 -08:00
2c86fd947f Feature/http (#16)
* add skeleton and broken http client code.

GET returns "Resource temporarily unavailable" errors...

* linux compile fix

* can GET some pages

* Update formatting in README.md

* unittest for sending large messages

* document bug

* Feature/send large message (#14)

* introduce send fragment

* can pass a fin frame

* can send messages which are a perfect multiple of the chunk size

* set fin only for last fragment

* cleanup

* last fragment should be of type CONTINUATION

* Add simple send and receive programs

* speedups receiving + better way to wait for thing

* receive speedup by using linked list of chunks instead of large array

* document bug

* use chunks to receive data

* trailing spaces

* Update README.md

Add note about message fragmentation.

* Feature/ws cli (#15)

* New command line tool for transfering files / still very beta.

* add readme

* use cli11 for argument parsing

* json -> msgpack

* stop using base64 and use binary which can be stored in message pack

* add target for building with homebrew

* all CMakeLists are referenced by the top level one

* add ws_chat and ws_connect sub commands to ws

* cleanup

* add echo and broadcast server as ws sub-commands

* add gitignore

* comments

* ping pong added to ws

* mv cobra_publisher under ws folder

* Update README.md

* linux build fix

* linux build fix

* move http_client to a ws sub-command

* simple HTTP post support (urlencode parameters)

* can specify extra headers

* chunk encoding / simple redirect support / -I option

* follow redirects is optional

* make README vim markdown plugin friendly

* cleanup argument parsing + add socket creation factory

* add missing file

* http gzip compression

* cleanup

* doc

* Feature/send large message (#14)

* introduce send fragment

* can pass a fin frame

* can send messages which are a perfect multiple of the chunk size

* set fin only for last fragment

* cleanup

* last fragment should be of type CONTINUATION

* Add simple send and receive programs

* speedups receiving + better way to wait for thing

* receive speedup by using linked list of chunks instead of large array

* document bug

* use chunks to receive data

* trailing spaces
2019-02-28 21:54:03 -08:00
932bb732e0 Feature/send large message (#14)
* introduce send fragment

* can pass a fin frame

* can send messages which are a perfect multiple of the chunk size

* set fin only for last fragment

* cleanup

* last fragment should be of type CONTINUATION

* Add simple send and receive programs

* speedups receiving + better way to wait for thing

* receive speedup by using linked list of chunks instead of large array

* document bug

* use chunks to receive data

* trailing spaces
2019-02-20 18:59:07 -08:00
8983dd97a1 use dynamically generated port number to configure servers in unittest 2019-01-28 15:24:19 -08:00
885d245afb heartbeat correct 2019-01-25 16:11:39 -08:00
75d01c0c11 close server socket on exit 2019-01-24 21:16:32 -08:00
a8b6573f96 hearbeat 2019-01-24 12:42:49 -08:00
a0f15bfb56 C++14 + use make_unique and make_shared to make shared pointers 2019-01-11 21:25:06 -08:00
8a0afef825 check select errors better 2019-01-07 11:18:00 -08:00
3eef8fba27 unittest on appveyor 2019-01-04 17:28:13 -08:00
bce5ef2dca timeout is configurable 2019-01-03 18:33:08 -08:00
64f649d1f9 split handshake code into its own files, so that Transport file is less massive 2019-01-02 20:07:54 -08:00
097c7e5397 server unittest for validating client request / new timeout cancellation handling (need refactoring) 2019-01-02 16:08:32 -08:00
b1710bfa31 server per message deflate support 2019-01-02 08:12:29 -08:00
2b136b2981 refactoring + cancellation was buggy during http upgrade 2019-01-02 07:45:07 -08:00
d279aecb87 cleanup / remove printf, add mutex, remove hardcoded values, can pass in a binding host 2019-01-01 14:28:41 -08:00
3443e82812 more cleanup to propagate server connection error and let onOpen callback execute 2018-12-31 12:43:47 -08:00
379a845166 cleanup / use a websocket instead of raw websockettransport 2018-12-30 22:00:49 -08:00
266cf93584 can accept multiple connection / server can send data back to client 2018-12-30 21:16:05 -08:00
0ee71e9a09 proof of concept server implementation 2018-12-29 23:15:27 -08:00
ea07afcc0b can create a socket from a fd 2018-12-29 21:53:33 -08:00
2d46a0605b fix warning: field '_eventCallback' will be initialized after field '_publishMode' 2018-12-23 14:18:53 -08:00
cbadecab33 non blocking dns lookup 2018-12-14 16:28:17 -08:00
8c079787f0 add cancellation support while connecting, to speed up WebSocket::stop 2018-12-09 17:56:20 -08:00
62528e6a0b http upgrade and connections use non blocking sockets 2018-12-09 14:07:40 -08:00
49bf8bd830 threading race condition fixes, detected by TSAN 2018-12-06 08:27:28 -08:00
c64bc20bb5 cleanup 2018-11-14 15:52:28 -08:00
54da891f79 per-message deflate compression fixes 2018-11-13 17:46:05 -08:00
9cb1d03411 tweaks doc / license + send proper error code when closing the connecion 2018-11-12 09:00:55 -08:00
4fed156b90 per message deflate support (with zlib) 2018-11-09 18:42:09 -08:00
de8bcd36e8 (satori_publisher) better error handling 2018-11-07 14:54:44 -08:00
f12e655cf8 Add DockerFile + parse rsv1 field 2018-11-07 11:45:17 -08:00
cf0045a483 stopping connection on Linux does not close the socket, which can create problem when re-starting the connection 2018-11-01 17:02:49 -07:00
912d926260 Handle Sec-WebSocket-Accept correctly 2018-10-27 10:24:48 -07:00
a8dfd640a7 capture an error code and a reason when the server closes the connection 2018-10-25 18:51:19 -07:00
eae2f7d113 Better ping/pong support 2018-10-25 14:43:35 -07:00
71b40c6d6c Windows support (no TLS yet) 2018-10-08 21:44:54 -07:00
af12089e7a make TLS support optional 2018-10-08 15:24:36 -07:00
10ce046b0f (openssl) verify that the certificate we are getting match the domain we are requesting 2018-10-05 12:08:45 -07:00
9b8d6cedfe First import 2018-09-27 14:57:19 -07:00