Simple, secure & standards compliant web server for the most demanding of applications
APACHE-2.0 License
Bot releases are visible (Hide)
Published by uNetworkingAB about 2 years ago
Published by uNetworkingAB about 2 years ago
Transfer-Encoding: chunked
.Published by uNetworkingAB about 2 years ago
Together with the SNI improvements from v20.18.0 you can now add/remove HTTP routes dynamically, both for the root ("catch all") domain, and for any specific SNI domain.
If you added a route with
app.get("/hello", [](auto *res, auto *req) {
});
You now remove it with app.get("/hello", nullptr);
The same applies to routes added under a SNI name - browsing to the domain with app.domain("server_name") you can then remove the route added.
Note that you cannot remove WebSocket routes just yet (but doing so could make sense semantically).
Published by uNetworkingAB about 2 years ago
Published by uNetworkingAB about 2 years ago
Thanks to @Young-Flash it's now possible to serve HTTP and WebSockets over Unix sockets - which interestingly works on all three platforms Windows, Linux, macOS 🤔
Published by uNetworkingAB about 2 years ago
This is a backwards compatible change that detaches the URL router from the App, and moves it underneath the SNI support (if any). The new hierarchy is: App -> (SNI) -> URL router.
One App can have the root level SSL certificate and its URL routes, and/or many per-domain SSL certificates and their own isolated URL routes.
You "browse" between different SNI domains by calling the new function app.domain(server name) before calling app.get or app.post or any such route registration call. This can be chained together in builder pattern. Last "browsed to" SNI is under where you register the URL route handler.
See example ServerName for usage.
Published by uNetworkingAB about 2 years ago
When a client uploads (HTTP POST) a large file there has been a less-than-ideal timeout logic in uWS, where practically 0.1 byte/sec was enough to keep the connection open. This version bumps the required upload throughput to 16kB/sec as the lowest allowed. Any client uploading slower, will be dropped. You can configure the constant HTTP_RECEIVE_THROUGHPUT_BYTES
as you wish.
Published by uNetworkingAB about 2 years ago
While still highly experimental, the HTTP/3 support is now functional enough to stream a large video file correctly and without corruption. The video is shown being played by Firefox here, but has since also been tested to work with Chrome, curl and quiche-client.
This is a very visual milestone - it shows not only HTTP/3 working, but both HTTP/1 and HTTP/3 working together on the same thread. As you can see in the picture, an HTTP/1 server is used to instruct (at least Firefox?) the browser to go use the HTTP/3 one instead.
Published by uNetworkingAB about 2 years ago
WITH_BORINGSSL=1 WITH_QUIC=1 make
and run the Http3Server binary. You can test it using quiche-client over IPv6 (you will need an IPv6 localhost address or else it will fail to listen). See Http3Server.cpp for an example quiche-client invocation.Published by over 2 years ago
Thanks to @o5k @zdm
Published by over 2 years ago
This release fixes a minor issue where the HTTP parser did not allow header values with bytes above 7-bit ASCII. Now it is possible to receive any byte sequence except for terminating CRLF. A unit test for this was added.
Published by over 2 years ago
It is believed that Apple finally fixed their permessage-deflate ("WebSocket compression") in Safari 15.4. This release will disable permessage-deflate for broken versions of Safari (15.0 - 15.3), but not for 15.4 and forwards. If you experience issues with Safari 15.4 and compression, report it and we can mark 15.4 as broken as well. Apple is not a transparent company and we cannot know what black magic they are up to and their releases do not explain anything.
Think different, think Apple. And now punch yourself in the face. Mmm, nosebleed.
Published by over 2 years ago
Published by over 2 years ago
Published by almost 3 years ago
Published by almost 3 years ago
Published by almost 3 years ago
Published by about 3 years ago
Fixes a build issue where TopicTree::iteratingSubscriber was private within WebSocket::iterateTopics function.
Published by about 3 years ago
Published by about 3 years ago