Use libuv for asynchronous operations like networking
Additional to our job subsystem, it might come in handy to use libuv:
http://libuv.org/
We can use it primarily for network transmissions, for filesystem access our job system is good enough already I hope.
Boost.Asio is another option, see this comparison.
Or ENet.
I worked much with libuv now in an university project. It is a plain C library, but can be used with C++ very well (mainly pass this as the void *userdata and use non-capturing lambdas). So I'll probably choose it.
Piece of Nodejs :) https://nikhilm.github.io/uvbook/index.html Good reading.
@TheJJ, the C++ standard will adopt Asio.
Uuh, when? :)
@TheJJ , the C++ Network Technical Specification is expected to be published by the end of 2017. It would eventually be merged into the C++ standard for C++ 2020. I guess we could expect compilers to be shipped with experimental network TS feature by the end of 2019 (with clang/libc++ I guess).
The current network TS draft is available here : http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4656.pdf
For an in-depth comparison : https://stackoverflow.com/questions/11423426/how-does-libuv-compare-to-boost-asio
IMHO, boost asio or libuv are both solid choices that should be considered. The fact that boost asio will eventually be standardized one day is not a killer argument by itself. Overall, it is just a good modern C++ networking library.
http://cbor.io/ might be an option for serialization