Efficient tools to build your streaming infrastructure


WebSockets over HTTP/2 support in SLDP

Earlier this year, we outlined our roadmap toward the next generation of SLDP playback. As part of that effort, we continue expanding Nimble Streamer capabilities to meet modern delivery requirements.

One of the key updates is the addition of HTTP/2 support for SLDP streaming, now available in Nimble Streamer.

HTTP/2 introduces improvements over HTTP/1.1, such as multiplexing. For real-time delivery like SLDP (Softvelum Low Delay Protocol), these advantages help optimize streaming efficiency and reduce overhead.

Currently, HTTP/2 playback for SLDP is supported only in Firefox. Google Chrome does not allow cross-domain HTTP/2 in the way required for SLDP; it only allows the playback if the website and the stream are on the same host. Because of this limitation, Chrome users will continue to rely on the existing mechanisms until browser vendors adjust their implementation.

Firefox works properly and you can utilize HTTP/2 advantages in scenarios like mosaic videowall where your browser will use single connection for multiple simultaneous streams.

To enable this feature in Nimble Streamer, add this parameter into nimble.conf file:

sldp_http2_support = true

Then re-start Nimble Streamer instance. On Ubuntu it’s done using “sudo service nimble restart” command. Please refer to config reference for more details about config file.

Research and development background

Before we started implementation, we conducted initial research regarding the availability of WebSockets over HTTP/2 and HTTP/3 support in the mainstream browsers.

During this process, we came across an article on websocket.org published in September of 2024 that included a table mentioning WebSocket over HTTP/3 (RFC 9220). At first glance, the information suggested that browser support was already in place. Encouraged by this, we even created a prototype branch for lsquic library to add WebSockets support over HTTP/3.

However, as we moved into debugging, we found that HTTP/3 support is not yet available in practice. And as we mentioned, Chrome has cross-domain issue for HTTP/2 which limits its usage of SLDP to HTTP/1.1 on the real-life scenarios. It seems the original article may have been overly optimistic or may have misinterpreted the current state of WebSocket implementation. For confirmation, we tracked down discussions in the official issue trackers:

Both clearly show that browser vendors recognize the demand but have not yet shipped support for HTTP/3, with no clear ETA for delivery.

So, while WebSocket over HTTP/3 is not available today, we are prepared to adopt it as soon as the underlying platforms provide the necessary capabilities. As with previous innovations, Nimble Streamer will be among the first to deliver practical support, and you’ll be able to test it here before anyone else.

Meanwhile, developers deploying SLDP streams should test playback in Firefox to experience the benefits of HTTP/2.

We’ll continue updating our community as new capabilities become available according to our roadmap.